【问题标题】:Exception hierarchy in plsqlplsql中的异常层次结构
【发布时间】:2013-12-05 16:55:21
【问题描述】:

plsql 中是否有类似异常层次结构的东西?我用谷歌搜索了这个,没有任何相关的东西出现。我知道我们应该将“WHEN OTHERS THEN”作为例外部分的最后一部分。关于其他例外,是否有类似层次结构的东西?还是所有异常都属于“WHEN OTHERS”,并且在某种程度上它是所有异常的基础,很像 Java 中的 Exception 类?

【问题讨论】:

    标签: exception plsql


    【解决方案1】:

    没有层次结构,每个异常都有自己的代码(除了您没有定义代码的用户定义的异常),可用于单独捕获异常。 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里面的信息挺多的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-28
      • 1970-01-01
      • 1970-01-01
      • 2013-08-20
      • 1970-01-01
      • 2013-12-25
      相关资源
      最近更新 更多