Có , chúng tôi có thể tuyên bố một khối try-catch trong một khối try-catch khác, đây được gọi là khối try-catch lồng nhau.
Khối thử bắt chéo lồng nhau
- Nếu một tiểu bang thử nội bộ t không có câu lệnh nắm bắt phù hợp đối với một ngoại lệ cụ thể, điều khiển được chuyển sang câu lệnh thử tiếp theo trình xử lý bắt được mong đợi đối với một tuyên bố nắm bắt phù hợp.
- Điều này tiếp tục cho đến khi một trong các câu lệnh bắt thành công hoặc cho đến khi tất cả lần thử lồng nhau câu lệnh đã xong.
- Nếu không có câu lệnh bắt nào khớp, thì hệ thống thời gian chạy Java sẽ xử lý ngoại lệ.
- Khi các khối thử lồng nhau được sử dụng, khối thử bên trong được thực hiện đầu tiên. Bất kỳ ngoại lệ nào được đưa ra trong khối thử bên trong đều bị mắc vào khối bắt tương ứng. Nếu không tìm thấy khối bắt phù hợp, thì khối bắt của khối thử bên ngoài được kiểm tra cho đến khi hết các câu lệnh try lồng nhau. Nếu không tìm thấy khối phù hợp nào, thì Môi trường thời gian chạy Java xử lý việc thực thi.
Cú pháp
try { statement 1; statement 2; try { statement 1; statement 2; } catch(Exception e) { // catch the corresponding exception } } catch(Exception e) { // catch the corresponding exception } .............
Ví dụ
import java.io.*; public class NestedTryCatchTest { public static void main (String args[]) throws IOException { int n = 10, result = 0; try { // outer try block FileInputStream fis = null; fis = new FileInputStream (new File (args[0])); try { // inner trty block result = n/0; System.out.println("The result is"+result); } catch(ArithmeticException e) { // inner catch block System.out.println("Division by Zero"); } } catch (FileNotFoundException e) { // outer catch block System.out.println("File was not found"); } catch(ArrayIndexOutOfBoundsException e) { // outer catch block System.out.println("Array Index Out Of Bounds Exception occured "); } catch(Exception e) { // outer catch block System.out.println("Exception occured"+e); } } }
Đầu ra
Array Index Out Of Bounds Exception occured