Bài 320: Catch nhiều ngoại lệ trong Java 7

Ngày đăng: 1/7/2023 11:00:31 AM

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ệ.


Ví dụ 1: Catch nhiều ngoại lệ

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16    

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

1

2

3

4

5

6

7

8

9

10

11

12    

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ệ

1

2

3

4

5

6

7

8

9

10

11

12

13     

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).

Lưu ý - Khối catch xử lý nhiều loại ngoại lệ với tham số catch là final. Trong ví dụ trên, tham số catch "e" là final và do đó bạn không thể sửa/gán bất kỳ giá trị nào cho nó.

Nguồn tin: viettuts.vn