예외 처리와 자바의 예외 클래스

2023. 11. 11. 02:49개발 문서/Java

728x90
반응형

예외 처리는 프로그램 실행 중에 발생할 수 있는 예외 상황을 대비하여 처리하는 메커니즘입니다. 자바에서는 예외 처리를 위해 try, catch, finally, throw, throws 등의 키워드를 사용합니다. 또한, 예외는 클래스로 표현되며, 자바에서는 예외 클래스의 계층 구조를 가지고 있습니다.

예외 처리 구문:

  1. try-catch:

    • try 블록 안에서 예외가 발생할 수 있는 코드를 작성하고, 예외가 발생하면 catch 블록에서 예외를 처리합니다.

      try {
         // 예외가 발생할 수 있는 코드
         int result = 10 / 0;
      } catch (ArithmeticException e) {
         // 예외가 발생했을 때 처리하는 코드
         System.out.println("예외 발생: " + e.getMessage());
      }
  2. finally:

    • finally 블록은 예외 발생 여부와 관계없이 항상 실행되는 코드를 작성할 때 사용됩니다.

      try {
         // 예외가 발생할 수 있는 코드
      } catch (Exception e) {
         // 예외 처리 코드
      } finally {
         // 예외 발생 여부와 상관없이 항상 실행되는 코드
      }
  3. throw와 throws:

    • throw 키워드를 사용하여 예외를 명시적으로 발생시킬 수 있습니다.

    • throws 키워드를 사용하여 메소드에서 발생할 수 있는 예외를 선언합니다.

      void myMethod() throws MyException {
         // 메소드 내용
         if (someCondition) {
             throw new MyException("Custom Exception Message");
         }
      }

자바의 예외 클래스 계층 구조:

자바의 예외 클래스들은 Throwable 클래스를 기반으로 하는 계층 구조를 가지고 있습니다. 주요한 예외 클래스들은 다음과 같습니다:

  • Throwable: 모든 예외 클래스의 최상위 클래스
    • Error: 프로그램이 복구하기 어려운 심각한 예외를 나타냄 (OutOfMemoryError 등)
    • Exception: 일반적인 예외를 나타냄
      • RuntimeException: 실행 중 발생하는 예외 (NullPointerException, ArrayIndexOutOfBoundsException 등)
      • IOException: 입출력과 관련된 예외 (FileNotFoundException 등)

프로그래머가 직접 정의하는 사용자 정의 예외도 가능하며, 이들은 주로 어플리케이션에서 발생하는 특정한 상황을 나타내기 위해 사용됩니다. 사용자 정의 예외는 Exception 클래스를 상속하여 구현할 수 있습니다.

public class MyException extends Exception {
    public MyException(String message) {
        super(message);
    }
}

예외 처리는 프로그램의 안정성을 높이고 예기치 못한 상황에 대비하는데 중요한 역할을 합니다. 항상 어떤 예외가 발생할 수 있는지 고려하고, 적절한 예외 처리를 수행하는 것이 좋은 프로그래밍 습관입니다.