사용자 정의 예외 만들기
- 우리가 직접 예외 클래스를 정의할 수 있음
 - 조상은 
Exception과RuntimeException중에서 선택 
1 | class MyException extends Exception { | 
2 |   MyException(String msg) { // 문자열을 매개변수로 받는 생성자 | 
3 |     super(msg) // 조상인 Exception클래스의 생성자를 호출 | 
4 |   } | 
5 | } | 
예외 되던지기(exception re-throwing)
- 예외를 처리한 후에 다시 예외를 발생시키는 것
 - 호출한 메서드와 호출된 메서드 양쪽 모두에게 예외처리하는 것
 - 분담처리할때 사용하는 경우가 많음
 
1 | class example { | 
2 |   public static void main(String[] args) { | 
3 |     try { | 
4 |       method1(); | 
5 |     } catch (Exception e) { | 
6 |       System.out.println("main메서드에서 예외가 처리되었습니다."); | 
7 |     } | 
8 |   } // main메서드의 끝 | 
9 |    | 
10 |   static void method1() throws Exception { | 
11 |     throw new Exception(); | 
12 |   } catch (Exception e) { | 
13 |     System.out.println("method1메서드에서 예외가 처리되었습니다."); | 
14 |     throw e; | 
15 |   } // method1메서드의 끝 | 
16 | } |