- 컴파일 에러 커파일 시에 발생하는 에러
- 런타임 에러 실행 시에 발생하는 에러
- 논리적 에러 실행은 되지만, 의도와 다르게 동작하는 것
error 프로그램 코드에 의해서 수습될 수 없는 심각한 오류
exception 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류
Exception
Exception - 사용자의 실수와 같은 외적인 요인에 의해 발생 : checked-예외처리 필수
RuntimeException - 프로그래머의 실수로 발생하는 예외 : unchecked-예외처리 선택
예제
public class Ex10 {
public static void main(String[] args) {
try {
method2();
System.out.println(6);
}catch(Exception e) {
System.out.println(7);
}
}
static void method2() throws Exception{ // (필수처리 예외만) 작성할 것 예외를 직접 처리는 것이 아니라 떠넘김
try {
method1();
System.out.println(1);
}catch(NullPointerException e) {
//예외 객체가 만들어지고 그 안에는 예외 정보들이 담겨져있다
System.out.println(2);
//throw e; throw : 예외를 발생시킴
e.getMessage(); //: 발생한 예외클래스이 인스턴스에 저장된 메시지를 얻을 수 있다
printStackTrace(); //: 예외 발생 당시의 호출스택에 있었던 메서드의 정보와 예외 메시지를 화면에 출력한다
}catch(Exception e) {
System.out.println(3);
return; // finally 까지 처리후 메소드문을 빠져나간다
}finally { // 예외 발생 여부 상관없이 무조건 실행이 된다
System.out.println(4);
}
System.out.println(5);
}
static void method1() {
throw new NullPointerException();
}
}