捕获IllegalArgumentException的最佳方法是什么
什么时候才能最好地利用这种类型的例外,如果陷入这样的陷阱,它是否能正常运行?
catch(Exception e)
还是需要明确捕获?
catch(IllegalArgumentException e)
它会被第一个捕获 – 但是其他一些exception也会被捕获。 你不应该抓住比你真正想要的更多。
第二个是更好的,如果你真的必须抓住它…但通常这表明调用代码中的错误。 有时这是另一种方法的情况,而不是validation其参数等。在理想的世界中,任何时候IllegalArgumentException
都应该有一种方法让调用者在传入之前validation该值,或调用一个版本将以非特殊方式失败(例如.NET中的TryParse
模式,在没有out
参数的情况下,Java中更难以out
)。 情况并非总是如此,但每当您收到IllegalArgumentException
时,都需要检查是否可以通过在调用方法之前检查值来避免它。
您不应该处理IllegalArgumentException。 它的目的是通知开发人员,他已经使用错误的参数调用了一个方法。 解决方法是,使用其他参数调用该方法。
如果你必须抓住它,你应该使用
catch(IllegalArgumentException e)
你应该远离catch (Exception)
因为这样你就可以捕获每一个可能的exception。 如果你真的只期望 IllegalArgumentException
并处理这种情况,你就不应该扩大那个范围; 那么,最好为其他类型的exception添加更多的catch块。
这实际上取决于手头的情况,要么本身是正确的。 在不缩小问题范围的情况下,给出“最佳使用”示例有点困难。