首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

RAISERROR 抛出的异常未进入 CATCH 块

2012-07-28 
RAISERROR 抛出的错误未进入 CATCH 块今天写了一个储存过程,希望当出错时通过 RAISERROR 抛出错误进入 CAT

RAISERROR 抛出的错误未进入 CATCH 块

今天写了一个储存过程,希望当出错时通过 RAISERROR 抛出错误进入 CATCH 块,代码如下:

else if @ExpType is nullraiserror('该导出不存在或者已经被撤销了', 10, 1)
执行 raiserror('该导出不存在或者已经被撤销了', 11, 1) 之后,并没有跳转到 BEGIN CATCH 块中,而是继续执行了  select @Result=1, @ErrMsg='--',并且,RAISERROR 所抛出的错误还输出到控制台查询 MSDN 发现,有这样一段说明:如果在 TRY...CATCH 构造的 TRY 块中执行的 RAISERROR 严重度介于 11 到 19 之间,会导致将控制传递到关联的 CATCH 块。如果指定 10 或更低的严重度,将使用 RAISERROR 返回消息,而不调用 CATCH 块。PRINT 不会将控制传输到 CATCH 块。原因就是严重程度小于11,将其改为RAISERROR('该导出不存在或者已经被撤销了', 11, 1)即可解决。

热点排行