我应该使用ArithmeticException还是IllegalArgumentException,这有什么不同之处?

时间:2017-04-30 20:47:15

标签: java exception-handling

如果我的某个方法getFactorial(int n)因负输入而失败,那么throwArithmeticException还是IllegalArgumentException?负数绝对是非法的论点;他们在算术上也是一种废话。对于程序员来说,为什么该方法无法处理输入,这或者它们只是一个指示是否重要?

2 个答案:

答案 0 :(得分:1)

ArithmeticException适用于

  

发生异常算术条件时抛出。

IllegalArgumentException适用于

  

抛出表示某个方法已被传递为非法或   不恰当的论点。

在你的情况下,这是一个提供给方法的错误参数,因此IllegalArgumentException似乎更精细。

我认为方法中出现的ArithmeticException对于会产生算术错误的计算更有意义,并且只能通过检查方法条目中的参数来猜测问题。

答案 1 :(得分:0)

在这种情况下应该使用IllegalArgumentException,因为您不希望用户将负参数(参数)传递给方法。

如果计算出的值没有意义,则应使用ArithmeticException

例如,ArithmeticException状态为Javadoc

  

发生异常算术条件时抛出。例如,一个整数"除以零"抛出这个类的一个实例。