【问题标题】:Oracle pl sql exception block will be executed whenOracle pl sql异常块将在何时执行
【发布时间】: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;

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

【问题讨论】:

    标签: oracle exception plsql oracle11g


    【解决方案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 的信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-06
      • 1970-01-01
      相关资源
      最近更新 更多