使用try…catch块进行t

使用try…catch块进行t

ID:20472431

大小:54.00 KB

页数:3页

时间:2018-10-11

使用try…catch块进行t_第1页
使用try…catch块进行t_第2页
使用try…catch块进行t_第3页
资源描述:

《使用try…catch块进行t》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、使用Try…Catch块进行T  SQLServer的错误处理或异常处理一直都是T-SQL开发中比较麻烦的部分。在过去,每一条语句运行后,你都要手动地进行错误检查,然后逐个错误的进行处理。SQLServer事务管理同样非常麻烦,你需要找出事务的状态,然后恰当的将其回滚或者提交。  而今,通过在SQLServer2005中为T-SQL添加TryCatch块,微软给我们提供了新的,更加健壮的错误处理能力。在本文中,我们将看到TryCatch块是如何工作的,并告诉你如何你在代码使用他们。同时,我们还将提供一些使用以前的方法处理问题和使用现代方

2、法处理问题的对比,是你更好的理解如何使用TryCatch。  TryCatch的定义  为了理解TryCatch块,你必须先明白异常处理的概念。异常处理非常简单:在执行你的代码时,那些非计划之内发生的事情就是异常,你需要做一些事情对它进行处理。至于如何处理异常,则由开发人员,也就是你来决定。  为了是你的T-SQL代码可以处理异常,你就需要使用TryCatch块。如果你使用过VisualStudio,那么你可能对TryCatch块的概念很熟悉。T-SQL中的TryCatch块虽然与完全成熟的VisualStudio中的很相似,但实际上它

3、少了一些选项。在使用TryCatch块时,将你所编写的需要运行的T-SQL代码放入Try块中。如果在运行这段代码时,如果一个严重级别是10级或者更高的错误发生,就会转到Catch块中运行那里面的异常处理代码。它的基本结构如下所示:  BEGINTRY  [T-SQL代码写在这里]  ENDTRY  BEGINCATCH  [异常处理代码写在这里]  ENDCATCH  在T-SQL中使用TryCatch块时,你需要注意以下这些关键问题:  Try块后面必须要直接接一个Catch块,否则就会发生一个错误。  TryCatch不能嵌套。  

4、如果Try块中的代码没有故障,将跳过Catch块,执行Catch块后的第一条语句。  当Catch块中的代码运行完毕后,将执行Catch块后的第一条语句。  处理错误  当一个错误发生后,你作为一名开发者需要决定如何处理它。因为你不能像.Net语言那样,将控制权重新转回引起错误的代码上,你所能做的可能就是将问题记入日志,并将所执行的事务进行回滚。为了帮助记录,有一些系统函数提供了错误的更全面的信息,这些函数的具体内容如下所示:  ERROR_NUMBER()–返回错误号。  ERROR_SEVERITY()–返回

5、错误严重级别。  ERROR_STATE()–返回错误状态。  ERROR_PROCEDURE()-返回错误所在的存储过程或触发器的名称。  ERROR_LINE()-返回错误所在行的行号。  ERROR_MESSAGE()-返回错误的实际信息。  使用这些函数,你可以记录错误的详细信息,并将这些信息返回给调用它的过程或者记录,以便对错误进行追踪和修复。这些函数只能在Catch块被调用,在其它地方使用会返回NULL。然而,这些函数可以被Catch块中的代码所使用。也就是说,你可以调用一个存储过程来处理错误,于是这个存储过程就

6、可以调用这些错误函数。下面就是这样的存储过程的一个示例: createPROCEDUREspLogError   AS   --给应用程序返回错误的详细信息   select   ERROR_NUMBER()ASErrNum,   ERROR_SEVERITY()ASErrSev,   ERROR_STATE()asErrState,   ERROR_PROCEDURE()asErrProc,   ERROR_LINE()asErrLine,   ERROR_MESSAGE()asErrMsg   --将错误记入错误数据库日志   in

7、sertINTOSQLErrors.dbo.ErrorLog   VALUES(ERROR_NUMBER(),ERROR_SEVERITY(),ERROR_STATE(),   ERROR_PROCEDURE(),ERROR_LINE(),ERROR_MESSAGE())  错误和异常处理对于所有好的编程规范都是至关重要的。现在使用SQLServer2005提供的TryCatch块,你可以实现更好的错误处理  这个过程可以在你的Catch块中被调用,用来返回和记录错误的详细信息。  BEGINTRY  --在这里插入代码:当错误发生时,

8、控制权将被转到Catch块  ENDTRY  BEGINCATCH  --这个过程将会记录错误并将详细信息返回给调用它的应用程序  execspLogError  ENDCATCH  使用XACT_STAT

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。