2017-02-10 55 views
1

我想知道为什么我的程序是这样的行为。检查与未检查的异常代码的可重用性

我有一个方法,当试图除以零时抛出一个ArithmeticException。我把这个方法放在试试区块。当它抛出一个异常时,如果有的话,继续的catch块会捕获这个ArithmeticException。

我理解这部分100%。

但我做了一些试验。在我的方法正文中:

public static int quotient(int number1, int number2) { 
    if (number2 == 0) 
     throw new ArithmeticException("Divisor cannot be zero!"); 
    return number1/number2; 
} 

我删除了第三行。当我删除第三行时,该程序仍然运行良好,并执行完全像以前一样。它发生时仍然会遇到ArithmeticException错误。

是因为ArithmeticException是未检查的异常,并且此错误仅在运行时捕获,因此否定需要我明确声明此程序会导致未检查的异常?如果它是一个检查的异常,我是否会特别需要声明这个方法会抛出一个未经检查的异常?

回答

0

如您所述算术异常是运行时异常,您不需要指定它会引发异常。

虽然您确实需要指定您的程序是否使用throws语句引发编译时异常。需要检查异常的一个示例是IOException。

+0

如果你知道,还有一点感谢,你知道“重新抛出异常给调用者吗?”是什么意思? ? – xAnnette97

+0

您重新抛出一个异常,以便您不必编写多个catch块。不要在源代码处理异常,你可以将这些异常放到调用者处,并在另一个类中处理。 – JordanH

+0

抱歉很蠢,但你打电话给你的意思是什么?你能更具体,然后我会标记你回答谢谢 – xAnnette97