Skip to main content

[Java] try-catch 로 잡히는 에러

컴파일 에러, 런타임 에러 모두 try-catch 구문으로 예외처리 할 수 있어? (부)

컴파일 에러는 try-catch로 처리할 수 없고, 런타임 에러만 try-catch로 예외 처리할 수 있다.


1. 왜 컴파일 에러는 try-catch로 처리할 수 없을까?

try-catch프로그램이 실행된 후(runtime) 발생할 수 있는 예외 상황을 처리하는 도구이다. 하지만 컴파일 에러는 실행 전에 발생하는 문제, 즉 코드 자체가 잘못되어 컴파일이 되지 않는 상황이기 때문에, 아예 프로그램이 시작되지 않는다.

예를 들어:

int x = ; // 세미콜론 뒤에 값이 없음 (Syntax Error)

이건 아예 코드가 잘못된 거라서 컴파일 자체가 안 되고, 실행까지도 가지 못한다. 그러니 try-catch는 적용될 수가 없다.


2. 어떤 에러가 try-catch로 잡히는가?

런타임 에러, 특히 Exception 계열은 try-catch로 잡을 수 있다.

try {
    int x = 10 / 0; // ArithmeticException
} catch (ArithmeticException e) {
    System.out.println("0으로 나눌 수 없습니다.");
}

또는

try {
    String s = null;
    s.length(); // NullPointerException
} catch (NullPointerException e) {
    System.out.println("널 접근 예외!");
}

출처 : chatGPT