예외처리 구문
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;
결과
오류가 발생했습니다.