RAISERROR严重程度不同意味着什么?
我最好的谷歌结果是这样的:
低于11是警告,而不是错误
11-16可供使用
16以上是系统错误
11-16之间没有行为差异
但是,从BOL,“任何用户都可以指定从0到18的严重级别”。
在我的特定存储过程中,我希望将错误返回到.Net客户端应用程序,因此它看起来像11-18之间的任何严重性级别都可以。有没有人有关于每个级别的含义以及如何使用它们的任何权威信息?
没有找到相关结果
已邀请:
2 个回复
粱委教
筷啸够对铅
可以终止执行。 带有RAISERROR()的TRY-CATCH警告: 严重性为16的
终止执行违规行以下的所有内容。 但是,这仅适用于Try-Block内部。
惊讶吗?我也是。 什么也让我陷入循环并不是所有Severity-16都是一样的。 如果你要在最顶层取消注释除零线,那么它下面的任何东西都不会运行。 Divide-By-Zero逻辑也会产生Severity-16 Exception,  但它是一个完整的处理,不像用
抛出。 注意:正确使用
作为Catch-Block内的最后一行            抛出Try-Block触发的
事件的SQL异常。            这将有效地停止执行。            在调用
之前,当Catch-Block中存在其他行时,需要
分号。 如果您的逻辑正确处理Catch-Block中的错误(并且您希望继续处理  之后的其余逻辑),然后不要使用
。 结论: 不要混淆SQL-Server-Engine抛出的Severity-16  用一个你用
筹集自己。 出于所有意图和目的(故意抛出自己的错误),只考虑2个严重程度:     0(用于信息或警告)和   16(用于在Try-Block中处理异常 - 将其踢出Catch-Block)。 信息现在! 注意:如果您使用
显示信息性消息,            然后我建议使用
:
当您需要一些见解时,这在长批量操作期间尤其有用  了解整个批次中达到某些里程碑标记时事情的进展情况。 如果不使用
,您可能永远不知道信息消息何时出现。 它们可能在整个批处理过程中间歇出现,或者在批处理完成时立即出现。