Oracle pl sql异常块将在何时执行
Posted
技术标签:
【中文标题】Oracle pl sql异常块将在何时执行【英文标题】:Oracle pl sql exception block will be executed when 【发布时间】:2013-04-26 16:16:15 【问题描述】:如果我有一个 oracle pl/sql 过程,我会像这样定义一个异常块:
exception
WHEN OTHERS THEN
errMsg := substr(SQLERRM, 1, 100);
dbms_output.put_line ('--> Error ALIAS1: ' || errMsg);
end;
无论引发什么样的异常都会执行吗?
【问题讨论】:
【参考方案1】:WHEN OTHERS
是一个包罗万象的 PL/SQL 异常,它没有被它自己的 WHEN
子句显式处理。
出于这个原因,使用它通常不是一个好主意;很容易意外捕获并丢失有关发生不良事件的重要信息。您应该捕获并处理您期望遇到的特定异常。如果您确实想记录或记录任何其他异常,则应在异常处理程序中包含 RAISE
,以便其他所有内容都能正常传播。
...
exception
when others then
errMsg := substr(SQLERRM, 1, 100);
dbms_output.put_line ('--> Error ALIAS1: ' || errMsg);
raise;
end;
阅读更多关于一般异常here 和关于OTHERS
here 的信息。
【讨论】:
以上是关于Oracle pl sql异常块将在何时执行的主要内容,如果未能解决你的问题,请参考以下文章