什么时候最好使用这种类型的异常,如果像这样被捕获,是否能正确处理它?</p>
catch(Exception e)
还是需要显式捕获?
catch(IllegalArgumentException e)
最佳答案
它会被第一个捕获 - 但其他一些异常也是如此。你不应该抓到比你真正想要的更多的东西。
如果您真的必须捕获它,第二个更好...但是通常这表明调用代码中存在错误。有时这是另一个更高层的方法未验证其参数等的情况。在理想的世界中,任何时候抛出 IllegalArgumentException
都应该有一种方法供调用者使用在传入值之前验证该值,或者调用一个将以非异常方式失败的版本(例如 .NET 中的 TryParse
模式,这在没有 out< 的 Java 中公认更难
参数)。情况并非总是如此,但每当您遇到 IllegalArgumentException
时,都值得检查一下您是否可以通过在调用方法之前检查值来避免它。
关于java - 捕获 IllegalArgumentException 的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2117541/