Java cho phép bạn bắt (catch) nhiều loại ngoại lệ trong một khối catch duy nhất. Nó được giới thiệu trong Java 7 và giúp tối ưu hóa code.
Bạn có thể sử dụng thanh dọc (|) để tách nhiều ngoại lệ trong khối catch.
Một cách cũ, trước khi tiếp cận Java 7 để xử lý nhiều ngoại lệ.
Nội dung chính
Ví dụ 1: Catch nhiều ngoại lệ
package vn.viettuts; public class MultipleExceptionExample1 { public static void main(String args[]) { try { int array[] = new int[10]; array[10] = 30 / 0; } catch (ArithmeticException e) { System.out.println(e.getMessage()); } catch (ArrayIndexOutOfBoundsException e) { System.out.println(e.getMessage()); } catch (Exception e) { System.out.println(e.getMessage()); } } }
Kết quả:
/ by zero
Ví dụ 2: Catch nhiều ngoại lệ trong Java 7
package vn.viettuts; public class MultipleExceptionExample2 { public static void main(String args[]) { try { int array[] = new int[10]; array[10] = 30 / 0; } catch (ArithmeticException | ArrayIndexOutOfBoundsException e) { System.out.println(e.getMessage()); } } }
Kết quả:
/ by zero
Ví dụ 3: Catch nhiều ngoại lệ
package vn.viettuts; public class MultipleExceptionExample3 { public static void main(String args[]) { try { int array[] = new int[10]; array[10] = 30 / 0; } catch (Exception | ArithmeticException | ArrayIndexOutOfBoundsException e) { System.out.println(e.getMessage()); } } }
Kết quả:
Compile-time error: The exception ArithmeticException is already caught by the alternative Exception
Vì vậy, ở đây, trong trường hợp khi bạn đang bắt nhiều ngoại lệ, hãy làm theo quy tắc tổng quát hóa. Nó có nghĩa là, bạn nên khai báo các lớp ngoại lệ trong khối catch từ con đến cha (từ chuyên biệt cho đến chung).