我想知道TRY/CATCH
T-SQL过程的最佳位置,为什么
在声明中:
CREATE PROCEDURE procedure_name
AS
BEGIN
-- Code
BEGIN TRY
sql_statement
END TRY
BEGIN CATCH
-- Handle errors
END CATCH
--Code
END
或通话中:
BEGIN TRY
EXEC procedure_name
END TRY
BEGIN CATCH
-- Handle errors
END CATCH
我会选择第一个。
BEGIN TRY
sql_statement
END TRY
BEGIN CATCH
-- Handle errors
END CATCH
原因是您想从源头捕获错误,然后采取一些适当的措施。
在第二个选项中,您让错误冒泡,并且您将无法访问catch块内的错误函数返回的所有精确错误信息。
例如,该ERROR_LINE()
函数将返回正在调用的包含实际sql代码的过程的行号,您可能想知道抛出实际异常的错误行号,此信息仅在catch中可用被调用过程的块。
这个故事的寓意是尝试捕获尽可能接近来源的异常。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句