如何处理 Java 中的 ArithmeticException(未检查)?\

javaobject oriented programmingprogramming更新于 2024/5/10 7:48:00

java.lang.ArithmeticException 是 Java 中的未检查异常。通常,当尝试将两个数字相除并且分母中的数字为零时,会遇到java.lang.ArithmeticException:/ by zeroJVM 可以构造 ArithmeticException  对象。

示例 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);
   }
}

在上面的例子中,由于分母值为零,发生了  ArithmeticExeption 

  • java.lang.ArithmeticException:除法期间 java 抛出的异常。
  • / by zero:是在创建 ArithmeticException 对象 时提供给 ArithmeticException  类的详细消息。

输出

线程"main"中的异常 java.lang.ArithmeticException:/ by zero
     在 ArithmeticExceptionTest.main(ArithmeticExceptionTest.java:5)

如何处理 ArithmeticException

让我们使用 try and catch 块来处理 ArithmeticException

  • try and catch 块包围可能抛出 ArithmeticException 的语句。
  • 我们可以 捕获ArithmeticException
  • 对我们的程序采取必要的措施,因为执行不会中止

示例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);
   }
}

当发生异常时,执行从发生异常的点开始的catch 。它会执行catch 块中的语句,并继续执行try 和 catch块之后的语句。

输出

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)

相关文章