PL / SQL中的异常处理。

时间:2013-02-27 17:49:37

标签: oracle exception-handling plsql

有人可以解释一下为什么以下代码中的答案是“Inside OTHERS”而不是“ORA -20002 5大于3”

BEGIN
IF 5>3 THEN
    RAISE_APPLICATION_ERROR (-20002, ‘5 is greater than 3’);
END IF;
EXCEPTION
    WHEN OTHERS THEN
        DBMS_OUTPUT.PUT_LINE(‘Inside OTHERS’);
END;

答案:在其他人内部

2 个答案:

答案 0 :(得分:4)

因为您正在捕获引发的异常并在控制台中打印消息“Inside OTHERS”。

我认为你需要这样的东西:

DECLARE
   comparison_error exception;
   PRAGMA EXCEPTION_INIT(comparison_error, -20002);
BEGIN
IF 5>3 THEN
    RAISE_APPLICATION_ERROR (comparison_error, '5 is greater than 3');
END IF;
EXCEPTION
    WHEN comparison_error THEN
        DBMS_OUTPUT.PUT_LINE('SQLERRM: ' || SQLERRM);
    WHEN OTHERS THEN
        DBMS_OUTPUT.PUT_LINE('Inside OTHERS');
END;

答案 1 :(得分:0)

试试这个:

BEGIN
IF 5>3 THEN
RAISE_APPLICATION_ERROR (-20002, '5 is greater than 3');
END IF;
EXCEPTION
WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE(sqlerrm);
    DBMS_OUTPUT.PUT_LINE('Inside OTHERS');
END;