[JAVA] 예외처리

집 가고 싶다.·2024년 1월 9일

JAVA

목록 보기
32/33
post-thumbnail

1. 에러 종류

  • 컴파일 에러: 소스코드의 구문 오류, 빨간색 표시, 고치기 쉬움.
  • 런타임 에러: 실행 중 발생하는 예외, 논리적 오류, JVM 문제, 예외 처리 필요.

2. 런타임 에러 종류

  • 논리적 오류: 논리 모순 방지 필요.
  • JVM 오류: 프로그래머 해결 불가.
  • 예외(Exception): 예측 가능한 상황에서 발생, 예외 처리로 제어 가능.

3. 자주 접하는 예외상황 클래스

  • 개별적으로 예외 클래스 지정해야 함.

4. 예외처리

try {
  // 실행 코드
} catch (ExceptionType e) {
  // 예외 처리
} finally {
  // 예외 발생 여부와 관계 없이 실행
}

5. 복합 에러 처리

catch (ExceptionType1 | ExceptionType2 e) {
  // 예외 처리
}

6. Exception 클래스

  • 최상위 예외 클래스.
  • 모든 예외에 일괄 대응, 세분화는 어려움.

7. 'e' 객체의 기능

  • e.getMessage(): 간략한 에러 메시지 반환.
  • e.getLocalizedMessage(): 동일한 기능.
  • e.printStackTrace(): 예외 상황 메시지 강제 출력.

Tip: 예외 처리로 프로그램 안정성 향상 및 디버깅 용이성 증가.

예제 코드

public class ExceptionHandlingExample {
    public static void main(String[] args) {
        try {
            int[] numbers = {1, 2, 3};
            int result = numbers[4]; // 배열 인덱스 초과 발생
            System.out.println(result);
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("Array index out of bounds.");
        } catch (Exception e) {
            System.out.println("An unexpected error occurred.");
        } finally {
            System.out.println("This block always executes.");
        }

        divide(10, 0); // 산술 예외
    }

    private static void divide(int a, int b) {
        try {
            int result = a / b;
            System.out.println(result);
        } catch (ArithmeticException e) {
            System.out.println("Cannot divide by zero.");
        }
    }
}

실행 결과

Array index out of bounds.
This block always executes.
Cannot divide by zero.
profile
틀린거 있으면 알려주세요.

0개의 댓글