firstException과 SecondException 2개의 Exception을 통해 예외를 전파
수정 전 코드
package p1;
class firstException extends Exception
class secondException extends Exception
class firstException {
throw new firstException(); // 예외 발생
// firstException 예외 전파
}
class secondException {
throw new secondException(); // 예외 발생
// firstException 예외 처리
// secondException 예외 전파
}
public class p1 {
public static void main(String[] args) {
firstException f = new firstException();
secondException s = new secondException();
first();
second();
}
}
[내가 놓쳤던 점]
1. 예외전파에 대한 개념을 완전히 놓치고 있었던 것 같다. 해당 예외에 대한 '메소드'호출을 통해 예외를 전파시키는 것인데 나는 예외 클래스를 만들고 있었다.
2. SecondException은 왜 나오지도 않나 했는데 FirstException에서 main 시작과 끝을 다 해버렸다. 그래서 SecondException은 예외발생~처리 기회를 갖지 못한다.
3. 결국 실행 결과는
main 시작
FirstException 예외 발생 전
FirstException 예외 처리
main 끝
수정 후 코드
package p1;
class FirstException extends Exception { }
class SecondException extends Exception { }
public class p1 {
static void first() throws FirstException {
System.out.println("FirstException 예외 발생 전");
throw new FirstException();
}
static void second() throws SecondException {
System.out.println("SecondException 예외 발생 전");
throw new SecondException();
}
public static void main(String[] args) {
System.out.println("main 시작");
try {
first();
second();
}
catch(FirstException f) {
System.out.println("FirstException 예외 처리");
} catch (SecondException s) {
System.out.println("SecondException 예외 처리");
}
System.out.println("main 끝");
}
}