OutOfMemoryError , StackOverflowError
예외 클래스의 계층도
예외 클래스의 계층 구조

Exception 클래스 & 그 자손들 : 사용자의 실수와 같은 외적인 요인에 의해 발생하는 예외 ⇒ 입력 데이터 형식이 잘못됐거나 존재하지 않은 파일 이름을 적었거나 등등RuntimeException 클래스와 그 자손들 : 프로그래머의 실수로 발생하는 예외 ⇒ 배열의 범위 벗어난 것, NullpointerException 등등예외처리(exception handling) : 발생할 수 있는 예기치 못한 예외의 발생에 대비한 코드를 작성 ⇒ 목적 - 프로그램의 비정상 종료 막음 & 정상적인 실행상태 유지
try {
// 예외가 발생할 가능성이 있는 문장들을 넣음
} catch (Exception1 e1) {
// Exception1이 발생했을 겨우 처리
// e1 변수는 해당 블록에서만 유효
} catch (Exception2 e2) {
// Exception2 발생시 처리
} catch (ExceptionN eN) {
// ...
}
⇒ try 블럭 안에서 예외가 발생하면 발생한 예외 종류에 맞게 catch 블록 수행
위 코드 발생 흐름
instanceof 를 활용한 예시
class ExceptionEx7 {
public static void main(String args[]) {
System.out.println(1);
System.out.println(2);
try {
System.out.println(3);
System.out.println(0/0); // 고의로 ArithmeticcException 발생시킴
System.out.println(4); // 실행되지 않는다.
} catch (ArithmeticException ae) {
if (ae instanceof ArithmeticException)
System.out.println("true");
System.out.println("ArithmeticException");
} catch (Exception e) {
System.out.println("Exception"); // ArithmeticException을 제외한 모든 예외 처리
} // try-catch의 끝
System.out.println(6);
} // main메서드의 끝
}
예외 클래스의 인스턴스에서 발생한 예외 정보 확인하기
paintStackTrace() : 예외 발생 당시, 호출 스택에 있었던 메서드의 정보와 예외 메시지를 화면에 출력 ⇒ 어떤 예외인지 구체적 확인?getMessage() : 발생한 예외클래스의 인스턴스에 저장된 메시지 얻을 수 있음멀티 catch 블럭 ⇒ 중복된 코드를 줄이기 위함
| 기호로 연결된 예외 클래스가 조상-자손 관계에 있다면 컴파일 에러 발생 ⇒ just 조상 클래스만 써주는 것과 같음| 기호로 연결된 예외클래스들의 공통 분모인 조상 클래스에 선언된 멤버만 사용할 수 있음