Java-被零除时无法捕获算术异常

Java-被零除时无法捕获算术异常,java,divide-by-zero,Java,Divide By Zero,我一定是做了什么蠢事。但我似乎不明白为什么这个简单的代码不起作用。InputMismatchException有效,但算术异常永远不会被捕获 import java.util.InputMismatchException; import java.util.Scanner; public class SubChap02_DivisionByZero { public static double quotient(double num, double denum) throws Arith

我一定是做了什么蠢事。但我似乎不明白为什么这个简单的代码不起作用。InputMismatchException有效,但算术异常永远不会被捕获

import java.util.InputMismatchException;
import java.util.Scanner;
public class SubChap02_DivisionByZero {
    public static double quotient(double num, double denum) throws ArithmeticException {
        return num / denum;
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        double num, denum, result;
        boolean continueLoop = true;
        do {
            try {
                System.out.printf("Please enter the numerator: ");
                num = scanner.nextFloat();
                System.out.printf("Please enter the denumerator: ");
                denum = scanner.nextFloat();
                result = quotient(num, denum);
                continueLoop = false;
                System.out.printf("THIS: %.2f/%.2f is %.2f\n", num, denum, result);    
                scanner.close();
          } catch (ArithmeticException arithmeticException) {
              System.err.printf("Exception : %s\n", arithmeticException);
              scanner.nextLine();
              System.out.println("You can try again!");
          } catch (InputMismatchException inputMismatchException) {
              System.err.printf("Exception : %s\n", inputMismatchException);
              scanner.nextLine();
              System.out.println("You can try again!");
          }
      } while (continueLoop == true);
    }
}

如果您希望在除以0.0时抛出
算术异常
,则不会。 将双精度除以0将返回
double.POSITIVE_∞
(正双精度除以0.0)、
double.NEGATIVE_∞
(负双精度除以0.0)或
double.NaN
(0.0除以0.0)


整数除以0将产生此异常。

这是因为您没有抛出异常,最可能发生的情况是您尝试将数字除以0。由于您使用的是
浮点
,因此允许进行此操作。因此,您将获得
无穷大
NaN


如果将输入更改为整数,则不会为浮点除零引发异常。它将与整数除法一起工作

给我一个提示,你们怎么会有算术异常?哇,这对我来说是新鲜事。更改为int,一切正常。谢谢!