Oracle pl sql异常块将在执行时执行

时间:2013-04-26 16:16:15

标签: oracle exception plsql oracle11g

如果我有一个oracle pl / sql过程,我定义一个这样的异常块:

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

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

1 个答案:

答案 0 :(得分:2)

对于任何未由其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