PL/SQL 引发处理异常

Posted

技术标签:

【中文标题】PL/SQL 引发处理异常【英文标题】:PL/SQL raise handled exception 【发布时间】:2016-08-04 12:19:08 【问题描述】:

如何在 PL/SQL 中抛出缓存异常?

例如,我有一个程序,我可以在其中捕获所有异常:

  EXCEPTION
   WHEN OTHERS THEN
      rollback;

然后我想将捕获的异常抛出给过程调用者。

提前致谢!

【问题讨论】:

【参考方案1】:

只需添加raise;:

EXCEPTION
  WHEN OTHERS THEN
    rollback;
    raise;

【讨论】:

【参考方案2】:

要重新引发异常,只需使用

raise;

要定义自定义应用程序错误,请查看raise_application_error,例如

raise_application_error(-20001, 'Warp core implosion imminent', true);

值得牢记的是,由于我刚刚决定将其称为 Exception Handling Uncertainty Principle,因此在报告完整的异常详细信息和对异常采取措施之间总是需要权衡取舍。

【讨论】:

以上是关于PL/SQL 引发处理异常的主要内容,如果未能解决你的问题,请参考以下文章

PL/SQL 异常和错误处理

约束违反异常 PL/SQL

PL\SQL 函数之间的异常处理

PL/SQL 异常不会引发

PL/SQL 异常以啥顺序引发?

PL/SQL数据开发那点事