捕获IllegalArgumentException的最佳方法是什么

时间:2010-01-22 13:43:39

标签: java exception

什么时候才能最好地利用这种类型的异常?如果陷入这样的问题,它是否能正常运行?

catch(Exception e)

还是需要明确捕获?

catch(IllegalArgumentException e)

4 个答案:

答案 0 :(得分:13)

被第一个捕获 - 但是其他一些例外情况也是如此。你不应该抓到比你真正想要的更多。

如果你真的来抓住它,第二个会更好......但是通常这表示调用代码中存在错误。有时这是另一种方法的情况,更高的是不验证参数等。在理想的世界中,任何时候IllegalArgumentException被抛出,应该有一种方法让调用者验证传递它之前的值,或调用将以非异常方式失败的版本(例如.NET中的TryParse模式,这在没有out参数的情况下在Java中更难实现)。情况并非总是如此,但每当你得到一个IllegalArgumentException时,值得检查一下你是否可以通过在调用方法之前检查值来避免它。

答案 1 :(得分:7)

您不应该处理IllegalArgumentException。它的目的是通知开发人员,他已经使用错误的参数调用了一个方法。解决方案是,用其他参数调用该方法。

如果你必须抓住它,你应该使用

catch(IllegalArgumentException e)

答案 2 :(得分:3)

你应该远离catch (Exception),因为这样你就会发现每个可能的异常。如果你真的只是期望 IllegalArgumentException并处理这种情况,你就不应该扩大这个范围;那么,最好为其他类型的异常添加更多的catch块。

答案 3 :(得分:0)

这实际上取决于手头的情况,要么本身是正确的。在不缩小问题范围的情况下,给出“最佳使用”的例子有点困难。