我想知道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
答案 0 :(得分:2)
我会选择第一个选项。
[
{
"email": "user@example.com",
"primary": true,
"verified": true
}
]
原因是你想要在源头捕获错误然后采取一些适当的措施。
在第二个选项中,您会让错误冒出来,并且您将无法访问catch块中错误函数返回的所有Exact错误信息。
例如,BEGIN TRY
sql_statement
END TRY
BEGIN CATCH
-- Handle errors
END CATCH
函数将返回调用包含实际sql代码的过程的调用过程的行号,您可能想知道抛出实际异常的错误行号,此信息仅在被调用过程的catch块中可用。
故事的道德是试图尽可能接近来源捕捉异常。