日期:2014-05-17  浏览次数:20440 次

sql2005中catch到的错误,如何返回到应用程序中?
mssql 2005中提供了try catch ,在try 块中发生的错误,会被catch到,
但现在我发现在catch中把错误捕获后,应用程序中却收不到错误信息了,
导致本来是发生了错误的,但应用程序却报正常的。比如,在c#里调用
一个存储过程,在存储过程中用到try catch,在try块 中发生错误后,catch把错误
捕获到了,导致c#里不知道发生了错误,无法将错误显示给用户看。
请问该如何到catch里的错误再返回到调用的应用程序中呢?

------解决方案--------------------
使用raiserror命令来用户自定义错误返回给程序,或者select error_message()将catch的错误文本返回给程序即可。

楼主请注意,try catch的捕捉语句的层面不是全部错误都能捕获,例如:select * from 不存在的表,try catch是捕获不到的,因为涵盖到解析语句对象的层面,这点请务必注意!
------解决方案--------------------
创建一个表TB
INSERT INTO TB   
select error_message() as 错误消息,
       error_severity() as严重级别,
       error_state() as state;