Java - 异常评估

标签 java exception evaluate

如何评估异常?我的意思是:

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,因为 FileNotFoundExceptionIOException 的子类>。

关于Java - 异常评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32230223/

相关文章:

java - 在Scala中使用Scala内核

java - 明确转换: java时发生未知错误

android - 适配器的内容已更改但 ListView 未收到通知 - 使用 AsyncTask

javascript - 像在 JS 中一样处理 Python 异常

java - Xpath.evaluate() 方法在 JAVA 上不返回任何值

java - 如何检查 GPS 是否已禁用 Android

java - 使用javax.swing输入信息并将其存储在Array List中

java - 如何使用 ldap 对用户进行身份验证,同时忽略 NameNotFoundException?

JavaScript,RegExp - 替换为涉及标记表达式的评估表达式?

javascript - 当在Electron中使用时,的page.evaluate()总是返回空对象