[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