더북(TheBook)

예외처리 구문

    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;

결과

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