plsql中的异常层次结构

时间:2013-12-05 16:55:21

标签: exception plsql

plsql中是否有类似异常的层次结构?我用Google搜索,没有任何相关内容。我知道我们应该将“当其他人”作为例外部分的最后部分。关于其他例外是​​否有类似层次结构的东西?或者所有例外都集中在“WHEN OTHERS”之下,它在某种程度上是所有异常的基础,就像Java中的Exception类一样?

1 个答案:

答案 0 :(得分:3)

没有层次结构,每个异常都有自己的代码(除了您没有定义代码的用户定义的异常),可用于单独捕获异常。 EXCEPTION WHEN OTHERS只会捕获每个异常,这就是为什么在使用不当时会非常危险的原因。

如果需要以分层方式捕获多个异常,可以通过指定多个处理程序来指定捕获它们的顺序,例如:

exception 
 when dup_val_on_index then
    insert ...
    raise;
 when user_definex_exception then
    logerror(sqlcode);
 when others then
    raise;

这使您可以提前捕获特定异常,然后在捕获剩余部分之前按照您的意愿处理(如果这是您想要做的事情)。 the documentation中有很多信息。