Java Multiple-catch block exception - Khối Multi-catch trong Java
Các khối chứa nhiều catch
xử lý các kiểu ngoại lệ khác nhau một cách độc lập.
Khi sử dụng các try
lồng nhau, khối try
bên trong được thi hành đầu tiên. Bất kỳ ngoại lệ nào bị chặn trong khối try
sẽ bị bắt giữ trong các khối catch
theo sau. Nếu khối ‘catch’ thích hợp không được tìm thấy thì các khối catch
của các khối try
bên ngoài sẽ được xem xét. Nếu không, Java Runtime Environment xử lý các ngoại lệ.
Cú pháp:
try {
// Protected code
} catch (ExceptionType1 e1) {
// Catch block
} catch (ExceptionType2 e2) {
// Catch block
} catch (ExceptionType3 e3) {
// Catch block
}
Ví dụ 1:
public class TestMultipleCatchBlock {
public static void main(String args[]) {
try {
int a[] = new int[5];
a[5] = 30 / 0;
} catch (ArithmeticException e) {
System.out.println("task1 is completed");
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("task 2 completed");
} catch (Exception e) {
System.out.println("common task completed");
}
System.out.println("rest of the code...");
}
}
Kết quả:
task1 is completed
rest of the code...
Ví dụ 2:
public class TestMultipleCatchBlock1 {
public static void main(String args[]) {
try {
int a[] = new int[5];
a[5] = 30 / 0;
} catch (Exception e) {
System.out.println("common task completed");
} catch (ArithmeticException e) {
System.out.println("task1 is completed");
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("task2 is completed");
}
System.out.println("rest of the code...");
}
}
Kết quả:
Compile-time error
Chương trình trên bị lỗi tại compile-time là vì khi có ngoại lệ xảy ra thì các khối lệnh catch (ArithmeticException e) và catch (ArrayIndexOutOfBoundsException e) không bao giờ được thực thi, do khối catch (Exception e) đã bắt tất cả các ngoại lệ rồi.
No Comments