- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
谈谈基于SQLServer的ExceptionHandling
对于所有的开发人员来说,Exception Handling是我们每天都要面对的事情。对于基于Source Code的Exception Handling,我想大家已经司空见惯了,但是对于Database级别的Exception Handling,就没有那么常见了。在这篇文章中,我将会介绍我对于基于Database编程中Exception Handling的一些粗浅的认识:在编写Stored Procedure时,如何抛出一个可预知的Exception,ADO.NET如何处理从Database抛出的Exception,如何保存基于Database Exception的Error Message,如何在Database和.NET Application之间进行消息的传递[注:这里的Database主要指SQL Server]。
HYPERLINK /artech/admin/EditPosts.aspx?opt=1 \l _Toc185595929 \t _blank @@ERROR HYPERLINK /artech/admin/EditPosts.aspx?opt=1 \l _Toc185595930 \t _blank RAISEERROR HYPERLINK /artech/admin/EditPosts.aspx?opt=1 \l _Toc185595931 \t _blank TRY CATCH Return HYPERLINK /artech/admin/EditPosts.aspx?opt=1 \l _Toc185595932 \t _blank Error message sys.messages HYPERLINK /artech/admin/EditPosts.aspx?opt=1 \l _Toc185595933 \t _blank ADO.NET Exception Handling HYPERLINK /artech/admin/EditPosts.aspx?opt=1 \l _Toc185595934 \t _blank SqlException HYPERLINK /artech/admin/EditPosts.aspx?opt=1 \l _Toc185595935 \t _blank InfoMessage
一、 @@ERROR
@@ERROR是我们经常使用的系统函数,其返回类型为INT,用以表示上一个语句的执行是否遇到错误,0便是语句正常执行,非0则以为着某个错误的产生。比如下面的一个例子:我在SQL Server Management Studio中执行下面一段简单的SQL:
DECLARE @result INTSET @result = 10/0PRINT @@ERRORGo
会得到如下的执行结果:
由于除零导致错误的产生,使@@ERROR的值变成8134。实际上8134是一个Error Number,代表某个系统定义的Error,每个预定义的Error由一个唯一的Error Number来唯一标识。@@ERROR本质上就是返回上一个语句执行遇到的Error的ID号,所以这并不是一个随机的值,无论是10/0还是100/0,@@ERROR返回的结果都是一样的。
由于可以通过@@ERROR得到Error的类型,可以帮助我们在编写Stored Procedure的过程中,借助这个@@ERROR进行一些流程的控制。比如我们知道Error Number为547代表违反外键约束,我们就可以通过@@ERROR的结果是否等于547来进行异常的处理:
UPDATE T_USERS_IN_ROLES SET [USER_ID] = dummy textIF @@ERROR = 547PRINT The user is not existent
通过我们上面一个截图我们发现,在
SQL Server Management Studio中执行任何一个语句的时候,如果遇到一个预定义的Error,会打印出相关的Error Message。这些Error Message到底是如何存储的呢?Error message和Error Numbder又是如何进行关联的呢?
实际上,SQL Server通过一个名为sys.messages的系统表来存储关于Error的一些信息[关于sys.messages,在后续的章节中还会提及]。下面是sys.messages的结构:message_id不仅仅代表message的唯一标识,对于一个预定义的Error,其Error number就是这个message_id。由于Localization的需要,我们需要
您可能关注的文档
最近下载
- RD100-109室外动力管道通用图册1.docx VIP
- 第4节 跨学科实践:制作微型密度计.pptx VIP
- 基于PLC的物料自动分拣系统设计与实现.docx VIP
- 《正负图形的画面》小学五年级美术PPT课件.pptx VIP
- BIM技术在装配式建筑中的应用价值分析.pdf VIP
- 保时捷-Macan (迈凯)-产品使用说明书-Macan GTS-Macan GTS-17Macan_95B_Basis_BAL_WKD95B039317_CHS_HighRes.pdf VIP
- 文言文《新唐书李白传》阅读练习及答案.pdf VIP
- 希特勒人物介绍课件.pptx VIP
- 2025 智慧医院医学查房流程优化课件.pptx VIP
- 儿童肥胖管理.pptx VIP
文档评论(0)