如何评估异常?我的意思是:
try{
catch(Exception ex){
if(ex == IOException){ //Error
System.out.println("IOException caught: " + ex.toString());
}
else if(){
}
....
}
我知道还有其他方法可以实现这一目标。我只是想知道是否可以将Exception
“ex”与已定义的Exception
(例如IOException
)进行比较。
最佳答案
最佳实践是按照相反的类层次结构顺序(从窄到宽)为需要捕获的每个 Exception
添加不同的 catch
语句。
try {
// TODO
}
catch(IOException ioe) {
}
catch(Exception e) {
}
否则,您始终可以使用instanceof
。
catch(Exception ex) {
if (ex instanceof IOException) {
}
}
注释
- 后者对于 Java 7 风格的多异常 catch block 可能稍微有用一些,例如
catch (IOException | PatternSyntaxException ex)
。 如Codebender提到,您可以通过使用以下习惯用法来匹配确切的类,而不是使用
instanceof
:if (ex.getClass().equals(IOException.class))
。instanceof
关键字比精确的类比较更强大,但可能执行速度较慢。例如,
new FileNotFoundException() instanceof IOException
返回true
,因为FileNotFoundException
是IOException
的子类>。
关于Java - 异常评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32230223/