使用Try…Catch块进行T-SQL错误处理(二)

日期: 2008-07-07 作者:Eric Johnson 来源:TechTarget中国 英文

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

ERROR_STATE() – 返回错误状态。 ERROR_PROCEDURE() – 返回错误所在的存储过程或触发器的名称。 ERROR_LINE() – 返回错误所在行的行号。 ERROR_……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

处理错误

  当一个错误发生后,你作为一名开发者需要决定如何处理它。因为你不能像.Net语言那样,将控制权重新转回引起错误的代码上,你所能做的可能就是将问题记入日志,并将所执行的事务进行回滚。为了帮助记录,有一些系统函数提供了错误的更全面的信息,这些函数的具体内容如下所示:

  • ERROR_NUMBER() – 返回错误号。
  • ERROR_SEVERITY() – 返回错误严重级别。
  • ERROR_STATE() – 返回错误状态。
  • ERROR_PROCEDURE() - 返回错误所在的存储过程或触发器的名称。
  • ERROR_LINE() - 返回错误所在行的行号。
  • ERROR_MESSAGE() - 返回错误的实际信息。

  使用这些函数,你可以记录错误的详细信息,并将这些信息返回给调用它的过程或者记录,以便对错误进行追踪和修复。这些函数只能在Catch块被调用,在其它地方使用会返回NULL。然而,这些函数可以被Catch块中的代码所使用。也就是说,你可以调用一个存储过程来处理错误,于是这个存储过程就可以调用这些错误函数。下面就是这样的存储过程的一个示例: 


create PROCEDURE spLogError 
  AS 
  --给应用程序返回错误的详细信息 
  select 
  ERROR_NUMBER() AS ErrNum, 
  ERROR_SEVERITY() AS ErrSev, 
  ERROR_STATE() as ErrState, 
  ERROR_PROCEDURE() as ErrProc, 
  ERROR_LINE() as ErrLine, 
  ERROR_MESSAGE() as ErrMsg 
  --将错误记入错误数据库日志 
  insert INTO SQLErrors.dbo.ErrorLog 
  VALUES(ERROR_NUMBER(), ERROR_SEVERITY(), ERROR_STATE(), 
  ERROR_PROCEDURE(), ERROR_LINE(),ERROR_MESSAGE()) 

相关推荐