我想知道为什么我的程序会这样。
我有一个方法,当尝试除以零时会抛出算术异常。我把这个方法放在一个try块中。当它抛出异常时,如果有的话,正在进行的 catch 块将捕获此算术异常。
我100%理解这部分。
但我做了一些实验。在我的方法主体中:
public static int quotient(int number1, int number2) {
if (number2 == 0)
throw new ArithmeticException("Divisor cannot be zero!");
return number1 / number2;
}
我删除了第三行。当我删除第三行时,程序仍然运行良好,并且与以前完全相同。它仍然捕获了ArithmeticException错误。
是因为 ArithmeticException 是一个未经检查的异常,并且此错误仅在运行时被捕获,从而消除了我明确声明该程序将导致未经检查的异常的需要吗?如果是已检查的异常,我是否需要特别声明此方法将引发未经检查的异常?
如您所述,算术异常是运行时异常,您无需指定它引发异常。
尽管您确实需要使用 throws 语句指定程序是否引发编译时异常。需要检查异常的一个示例是 IOException。