在SQL Server中使用TRY ... CATCH和@@ ERROR有什么区别?

Vin*_*inu 5 sql t-sql database sql-server

在编写事务SQL操作时,我经常使用@@ ERROR来确定事务期间是否发生了某些问题。但是我真的不知道与使用TRY ... CATCH进行异常处理相比,它的优缺点是什么,或者哪个更好。请澄清这些区别和有用的场景之间的区别。

在此先感谢Vinu。

M.A*_*Ali 3

@@ERROR一旦发生错误,就会被填充,但是如果在错误发生后执行另一个语句,@@ERROR则会将其值重置为NULL,因此预测可能发生错误的位置并将其值存储到变量等似乎很麻烦。

就好像您正在使用TRY...CATCH块一样,一旦TRY块中发生错误,您的控制就会跳转到该CATCH块,并且您可以使用系统错误函数,它可以为您提供有关错误的详细信息。如果没有发生错误,则控件永远不会进入CATCH块。

其中一些系统错误函数是:

ERROR_LINE()
EROR_MESSAGE()
ERROR_Severity()
ERROR_PROCEDURE()
ERROR_STATE()
Run Code Online (Sandbox Code Playgroud)

因此,我个人认为使用它TRY...CATCH可以让你作为开发人员的生活变得更加轻松。