예외처리 구문

        EXCEPTION WHEN 예외명1 THEN 예외처리 구문1
         WHEN 예외명2 THEN 예외처리 구문2
         ...
         WHEN OTHERS THEN 예외처리 구문n;
    

    예외처리 구문을 보면 CASE문과 비슷한 구조임을 알 수 있다. 즉 처리할 예외명을 언급하고 그 예외에 해당되면 예외처리 구문을 나열하는 식이다. WHEN 다음에 위치하는 예외명은 아무 이름이나 사용할 수는 없고 시스템 예외 중 일부와 사용자가 직접 정의한 예외명을 사용할 수 있다. 구체적인 예외명을 알 수 없을 때는 OTHERS를 사용하면 되는데, 이렇게 하면 오라클 시스템에서 PL/SQL 코드 상에서 발생한 런타임 예외를 자동으로 잡아 준다. 자동으로 예외를 잡아 주니 이때 처리할 수 있는 예외는 물론 시스템 예외에 한정된다. 그러면 의도적으로 예외를 발생시켜 보자.

    입력

        DECLARE
          vi_num NUMBER := 0;
        BEGIN
          vi_num := 10 / 0;
          DBMS_OUTPUT.PUT_LINE('Success!');
        END;
    

    결과

        ORA-01476: 제수가 0입니다
    

    10을 0으로 나누려니 오류가 발생했다. 예외처리 구문을 사용하지 않으니 시스템에서 오류를 뱉어낸 것이다. 이번에는 예외처리 구문을 넣어 보자.

    입력

        DECLARE
          vi_num NUMBER := 0;
        BEGIN
          vi_num := 10 / 0;
          DBMS_OUTPUT.PUT_LINE('Success!');
    
        EXCEPTION WHEN OTHERS THEN
          DBMS_OUTPUT.PUT_LINE('오류가 발생했습니다');
        END;
    

    결과

        오류가 발생했습니다.
    
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.