Oracle Database 강좌/4. PL SQL

예외 처리: EXCEPTION 처리

_Blue_Sky_ 2024. 10. 7. 13:14
728x90

PL/SQL 예외 처리: EXCEPTION 처리를 깊이 있게 파헤치다

 

PL/SQL 개발 과정에서 예상치 못한 오류는 프로그램의 정상적인 작동을 방해하고, 심각한 문제를 야기할 수 있습니다. 이러한 문제를 해결하고 프로그램의 안정성을 높이기 위해 예외 처리(Exception Handling)는 필수적입니다. 본 글에서는 PL/SQL에서 제공하는 EXCEPTION 처리에 대해 자세히 알아보고, 다양한 예시와 함께 실제 개발에 적용하는 방법을 설명합니다.

예외 처리의 개념

예외 처리란 프로그램 실행 중 발생하는 예외적인 상황을 감지하고, 미리 정의된 처리 로직에 따라 적절하게 대응하는 것을 의미합니다. PL/SQL에서는 예외를 발생시키는 다양한 원인이 존재하며, 이러한 예외를 포착하여 프로그램의 흐름을 제어하고, 사용자에게 알림 메시지를 제공하거나 로그를 남기는 등의 작업을 수행할 수 있습니다.

PL/SQL 예외 처리의 종류

PL/SQL에서 사용되는 예외는 크게 다음과 같이 분류할 수 있습니다.

  • 사용자 정의 예외: 개발자가 직접 정의하는 예외로, 특정 조건에서 발생하는 오류를 나타내기 위해 사용합니다.
  • 시스템 예외: 데이터베이스 시스템에서 발생하는 예외로, 예를 들어 테이블이 존재하지 않거나, 데이터 형식이 일치하지 않는 경우 등이 있습니다.
728x90

EXCEPTION 처리 구문

PL/SQL에서 EXCEPTION 처리를 위한 기본적인 구문은 다음과 같습니다.

DECLARE
  -- 변수 선언
EXCEPTION
  WHEN 예외 이름 THEN
    -- 예외 처리 로직
  WHEN OTHERS THEN
    -- 모든 예외에 대한 처리 로직
END;
 
  • DECLARE: 변수 선언 부분입니다.
  • EXCEPTION: 예외 처리 부분입니다.
  • WHEN 예외 이름 THEN: 특정 예외가 발생했을 때 실행되는 부분입니다.
  • WHEN OTHERS THEN: 모든 예외에 대한 처리 로직을 작성하는 부분입니다.

예외 처리 예시

DECLARE
  v_salary NUMBER := -1000;
  e_negative_salary EXCEPTION;
BEGIN
  IF v_salary < 0 THEN
    RAISE e_negative_salary;
  END IF;

  -- 다른 로직
EXCEPTION
  WHEN e_negative_salary THEN
    DBMS_OUTPUT.PUT_LINE('급여는 음수일 수 없습니다.');
  WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('알 수 없는 오류 발생: ' || SQLERRM);
END;
 

위 예시에서는 급여가 음수일 경우 사용자 정의 예외 e_negative_salary를 발생시키고, 해당 예외가 발생하면 오류 메시지를 출력합니다. WHEN OTHERS THEN 부분에서는 예상치 못한 다른 예외가 발생했을 때 일반적인 오류 메시지를 출력합니다.

예외 처리 시 주의 사항

  • 명확한 예외 메시지: 사용자에게 유용한 정보를 제공하기 위해 명확하고 간결한 예외 메시지를 작성해야 합니다.
  • 적절한 예외 처리 로직: 각 예외에 대한 처리 로직은 프로그램의 흐름을 고려하여 신중하게 작성해야 합니다.
  • 중첩된 예외 처리: 예외 처리 블록 내에서 또 다른 예외가 발생할 수 있으므로, 중첩된 예외 처리에 대한 이해가 필요합니다.
  • 시스템 예외 처리: 시스템 예외에 대한 처리 로직은 데이터베이스 시스템의 특징을 고려하여 작성해야 합니다.

결론

PL/SQL 예외 처리는 프로그램의 안정성을 높이고, 사용자에게 더 나은 경험을 제공하기 위한 필수적인 기능입니다. 본 글에서는 PL/SQL 예외 처리의 기본 개념부터 다양한 예시, 그리고 주의 사항까지 자세히 살펴보았습니다. 실제 개발 환경에서 예외 처리를 효과적으로 활용하여 더욱 안정적이고 강력한 PL/SQL 프로그램을 개발할 수 있기를 바랍니다.

추가적으로 다룰 수 있는 내용

  • 사용자 정의 예외 생성 방법
  • 시스템 예외 종류 및 처리 방법
  • 예외 전파
  • 예외 로그 기록
  • PL/SQL 개발 도구에서의 예외 디버깅
728x90