SQL Server中Try Catch处置异常的操作是什么
发布时间:2023-05-19 11:41 所属栏目:116 来源:互联网
导读:今天这篇我们来学习和了解SQL Server中Try Catch处理异常的操作是什么,下文的讲解详细,步骤过程清晰,对大家进一步学习和理解SQL Server中Try Catch处理异常的操作是什么有一定的帮助。有这方面学习需要的朋友就继续往下看吧! 如何在 SQL Server 中使用 T
今天这篇我们来学习和了解“SQL Server中Try Catch处理异常的操作是什么”,下文的讲解详细,步骤过程清晰,对大家进一步学习和理解“SQL Server中Try Catch处理异常的操作是什么”有一定的帮助。有这方面学习需要的朋友就继续往下看吧! 如何在 SQL Server 中使用 Try Catch 处理错误? 从 SQL Server 2005 开始,我们在TRY 和 CATCH块的帮助下提供了结构错误处理机制。使用TRY-CATCH的语法如下所示。 BEGIN TRY --这里写可能导致错误的语句 END TRY BEGIN CATCH --当错误发生后,这里的语句将会被执行 END CATCH -- 其他语句 有可能抛出异常的SQL 语句需要放在BEGIN TRY和END TRY块之间。如果在 TRY 块中发生异常,则控制权立即转移到相应的CATCH块。如果 TRY 块中没有发生异常,则直接跳过CATCH块,执行CATCH块之后的语句。 注意:被 CATCH 捕获的错误不会返回给调用应用程序。如果要将错误信息返回给调用应用程序,则需要将 RAISERROR() 函数显式与 catch 块一起使用。在之前的文章中,我们讨论了如何使用 RAISERROR() 函数显式地引发错误。参考: SQL Server 中的异常处理 示例:了解 SQL Server 中的 Try-Catch 实现。 在下面的示例中,我们使用 SQL Server TRY CATCH 实现和用户定义的错误语句来创建一个用于除以 2 个变量值的存储过程。 IF OBJECT_ID('spDivideTwoNumbers','P') IS NOT NULL DROP PROCEDURE spDivideTwoNumbers GO CREATE PROCEDURE spDivideTwoNumbers( @Number1 INT, @Number2 INT ) AS BEGIN DECLARE @Result INT SET @Result = 0 BEGIN TRY SET @Result = @Number1 / @Number2 PRINT '结果是: ' + CAST(@Result AS VARCHAR) END TRY BEGIN CATCH PRINT '第二个数字不能为0' END CATCH END 让我们来测试一下这个存储过程 exec spDivideTwoNumbers 100,1 输出: 结果是: 100 exec spDivideTwoNumbers 100,0 输出: 第二个数字不能为0 当我们用正确的值执行上述存储过程时,程序就不会出现错误。这意味着在执行完 try 块中的所有语句后,控件直接跳转到存在于 catch 块之后的语句,而不执行 catch 块。 如果在执行过程中,即在try块中发生任何错误,那么在这种情况下,从发生错误的行开始,控制权直接跳转到catch块。所以 try 块中的其余语句将不会执行,而 catch 块将执行。 注意:在上面的程序中,当错误发生时,我们会显示一条用户自定义的错误消息“第二个数字不能为0”。 ALTER PROCEDURE spDivideTwoNumbers( @Number1 INT, @Number2 INT ) AS BEGIN DECLARE @Result INT SET @Result = 0 BEGIN TRY SET @Result = @Number1 / @Number2 PRINT '结果是: ' + CAST(@Result AS VARCHAR) END TRY BEGIN CATCH PRINT ERROR_MESSAGE() END CATCH END 再次执行: exec spDivideTwoNumbers 100,0 输出: 遇到以零作除数错误。 ERROR_MESSAGE 是系统函数, 此函数返回导致 TRY...CATCH 构造的 CATCH 块执行的错误消息文本。 (编辑:ASP站长网) |
相关内容
网友评论
推荐文章
热点阅读