Đôi khi chúng ta cần rethrow exception trong Java. Nếu một catch block không thể xử lý ngoại lệ cụ thể mà nó đã bắt, chúng ta có thể rethrow exception. Biểu thức rethrow khiến đối tượng thrown ban đầu được ném lại.
Vì ngoại lệ đã được bắt ở scope mà biểu thức rethrow xảy ra, nó được ném ra ngoài đến try block bao quanh tiếp theo. Do đó, nó không thể được xử lý bởi catch blocks ở scope mà biểu thức rethrow xảy ra. Bất kỳ catch blocks nào cho try block bao quanh đều có cơ hội bắt ngoại lệ.
Cú pháp
catch(Exception e) {
System.out.println("An exception was thrown");
throw e;
}Ví dụ
public class RethrowException {
public static void test1() throws Exception {
System.out.println("The Exception in test1() method");
throw new Exception("thrown from test1() method");
}
public static void test2() throws Throwable {
try {
test1();
} catch(Exception e) {
System.out.println("Inside test2() method");
throw e;
}
}
public static void main(String[] args) throws Throwable {
try {
test2();
} catch(Exception e) {
System.out.println("Caught in main");
}
}
}Kết quả
The Exception in test1() method Inside test2() method Caught in main