반응형
예외 되던지기
한 메서드에서 발생할 수 있는 예외가 여럿인 경우, 몇 개는 try-catch문을 통해서 메서드 내에서 자체적으로 처리하고, 그 나머지는 선언부에 지정하여 호출한 메서드에서 처리하도록 함으로써, 양쪽에서 나눠서 처리되도록 할 수있다.
이것은 예외를 처리한 후에 인위적으로 다시 발생시키는 방법을 통해서 가능하다.
예외가 발생할 가능성이 있는 메서드에서 try-catch문을 사용해서 예외를 처리해주고 catch문에서 필요한 작업을 행한 후에 throw문을 사용해서 예외를 다시 발생시킨다.
다시 발생한 예외는 이 메서드를 호출한 메서드에게 전달되고 호출한 메서드의 try-catch문에서 예외를 또 다시 처리한다.
static void method1() throws Exception {
try {
throw new Exception();
} catch (Exception e) {
System.out.println("method1 Exception");
throw e; // 다시 예외를 발생 시킨다.
}
}
public static void main(String[] args) {
try {
method1();
} catch (Exception e) {
System.out.println("main Exception");
}
}
// 결과
// method1 Exception
// main Exception
반환값이 있는 try-catch문
반환값이 있는 return문의 경우, catch블럭에도 return문이 있어야 한다.
예외가 발생했을 경우에도 값을 반환해야하기 때문이다.
또는 catch블럭에서 예외 되던지기를 해서 호출한 메서드로 예외를 전달하면 return문이 없어도 된다.
그래서 검증에서도 assert문 대신 AssertError를 생성해서 던진다.
static int method1() throws Exception {
try {
System.out.println("method1 호출");
return 1;
} catch (Excpetion e) {
System.out.println("method1 Exception");
// return 0; // try블럭에 return문이 있기 때문에 catch블럭에도 return문이 있어야 한다.
throw new Exception(); // return문 대신 예외를 호출한 메서드로 전달한다.
}
}
public static void main(String[] args) {
try {
method1();
} catch (Exception e) {
System.out.println("main Exception");
throw e;
}
}
반응형
'Java' 카테고리의 다른 글
Object Class (0) | 2021.09.30 |
---|---|
연결된 예외(chained exception) (0) | 2021.09.30 |
사용자 정의 예외(Exception) 만들기 (0) | 2021.09.27 |
try-catch문 (0) | 2021.09.27 |
메서드(Method)에 예외(Exception) 선언하기 (0) | 2021.09.27 |