Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Cách xử lý ArithmeticException (unchecked) trong Java?


java.lang.ArithmeticException là một ngoại lệ unchecked trong Java. Thường thì người ta sẽ gặp java.lang.ArithmeticException: / by zero xảy ra khi cố gắng chia hai số và số ở mẫu số là không. Các đối tượng ArithmeticException có thể được xây dựng bởi JVM.

Ví dụ 1

public class ArithmeticExceptionTest { 
    public static void main(String[] args) { 
        int a = 0, b = 10; 
        int c = b/a; 
        System.out.println("Value of c is : "+ c); 
    } 
}

Trong ví dụ trên, ArithmeticException xảy ra do giá trị mẫu số bằng không.

  • java.lang.ArithmeticException: Ngoại lệ được ném bởi Java trong quá trình chia.
  • / by zero: là thông điệp chi tiết được đưa cho lớp ArithmeticException khi tạo đối tượng ArithmeticException.

Kết quả

Exception in thread "main" java.lang.ArithmeticException: / by zero     
    at ArithmeticExceptionTest.main(ArithmeticExceptionTest.java:5)


Cách xử lý ArithmeticException

Hãy xử lý ArithmeticException bằng cách sử dụng khối try và catch.

  • Bao quanh các câu lệnh có thể ném ArithmeticException với khối try và catch.
  • Chúng ta có thể Catch ArithmeticException
  • Thực hiện hành động cần thiết cho chương trình, vì việc thực thi không bị hủy bỏ.

Ví dụ 2

public class ArithmeticExceptionTest { 
    public static void main(String[] args) { 
        int a = 0, b = 10 ; 
        int c = 0; 
        try { 
            c = b/a; 
        } catch (ArithmeticException e) { 
            e.printStackTrace(); 
            System.out.println("We are just printing the stack trace.\n"+ "ArithmeticException is handled. But take care of the variable \"c\""); 
        } 
        System.out.println("Value of c :"+ c); 
    } 
}

Khi một ngoại lệ xảy ra, việc thực thi chuyển đến khối catch từ điểm xảy ra ngoại lệ. Nó thực hiện câu lệnh trong khối catch và tiếp tục với câu lệnh hiện diện sau các khối try và catch.

Kết quả

We are just printing the stack trace. ArithmeticException is handled. But take care of the variable "c" Value of c is : 0 java.lang.ArithmeticException: / by zero     
    at ArithmeticExceptionTest.main(ArithmeticExceptionTest.java:6)