2012-03-30 30 views

回答

2

不,它永远不会被击中。这很容易在这里演示:

DECLARE @error int 
begin try 
    Select 1/0 
    Set @error = @@error 
    If @error <> 0 
     begin raiserror('error',16,1) 
     end 
end try 
begin catch 
    select error_message() 
end catch 

SELECT @error 

我怀疑有人更新了一些旧代码,但没有真正理解他们在做什么。

@error将在每个成功语句后设置为0,但从不会获得分配的错误,因为它将被TRY...CATCH绕过。

相关问题