如果我有一个oracle pl / sql过程,我定义一个这样的异常块:
exception
WHEN OTHERS THEN
errMsg := substr(SQLERRM, 1, 100);
dbms_output.put_line ('--> Error ALIAS1: ' || errMsg);
end;
无论引发什么样的异常,都会执行此操作吗?
答案 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;