如果我有一个 oracle pl/sql 过程,我会定义一个异常块,如下所示:
exception
WHEN OTHERS THEN
errMsg := substr(SQLERRM, 1, 100);
dbms_output.put_line ('--> Error ALIAS1: ' || errMsg);
end;
无论引发什么样的异常都会执行吗?
WHEN OTHERS
是任何没有由其自己的WHEN
子句显式处理的 PL/SQL 异常的包罗万象。
出于这个原因,使用它通常不是一个好主意。很容易意外捕获并丢失有关发生不良事件的重要信息。您应该捕获并处理您期望遇到的特定异常。如果您确实想要记录或记录任何其他异常,您应该RAISE
在异常处理程序中包含 a ,以便其他所有内容都能正常传播。
...
exception
when others then
errMsg := substr(SQLERRM, 1, 100);
dbms_output.put_line ('--> Error ALIAS1: ' || errMsg);
raise;
end;