TRY / CATCH bloc在SQL Server存储过程中的位置

阿达玛·迪亚洛|

我想知道TRY/CATCHT-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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

存储过程中try-catch的奇怪行为

来自分类Dev

在存储过程中使用SQL Try Catch-我做对了吗?

来自分类Dev

try catch语句的位置

来自分类Dev

如何从SQL Server TRY ..... CATCH块获取error_message

来自分类Dev

SQL-Server,TSQL,TRY-CATCH块

来自分类Dev

在与SQL连接的旧教程中实现swift的新try catch

来自分类Dev

C#中SQL连接的Try Catch正确使用

来自分类Dev

SQL Server存储过程中的错误

来自分类Dev

SQL Server存储过程中的IF条件

来自分类Dev

SQL Server:存储过程中的IF THEN ELSE

来自分类Dev

在SQL Server中的存储过程中读取xml的问题

来自分类Dev

SQL Server中存储过程中的可选参数

来自分类Dev

在SQL Server中的存储过程中读取xml的问题

来自分类Dev

在Catch块中再次重用Try-Catch块

来自分类Dev

为什么 try catch 中的“catch”声明 $e 的类型

来自分类Dev

Matlab中的条件try catch语句

来自分类Dev

在try / catch块Java中返回语句

来自分类Dev

在C#中替换try ... catch块

来自分类Dev

Swift中的try-catch异常

来自分类Dev

catch / try块不在Ruby中运行

来自分类Dev

扫描程序在循环的try / catch中失败

来自分类Dev

异常未捕获在try catch块中

来自分类Dev

在Java中的try catch语句中返回

来自分类Dev

.NET中的try-catch-continue

来自分类Dev

在try-catch中包装specflow方案

来自分类Dev

在Java中try-catch-finally块

来自分类Dev

在try / catch块中引发的异常(Java)

来自分类Dev

try / catch块中未处理的异常

来自分类Dev

在嵌套的try catch块中返回结果