1

如果我有一个 oracle pl/sql 过程,我会定义一个异常块,如下所示:

exception
WHEN OTHERS THEN
errMsg := substr(SQLERRM, 1, 100);
  dbms_output.put_line ('--> Error ALIAS1: ' || errMsg);
end;

无论引发什么样的异常都会执行吗?

4

1 回答 1

2

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;

在此处阅读更多关于一般例外的信息,以及在OTHERS 此处了解更多信息。

于 2013-04-26T16:30:25.403 回答