java - Android 不支持 Java v7+,所以我应该使用多个 catch 还是一个带有 instanceof 检查的 catch?

标签 java android exception try-catch java-7

我有以下情况:

try{
    // Do some things that can cause the exceptions
}
catch(SomeException ex){
    doSomething();
}
catch(SomeOtherException ex){
    doSomething();
}
catch(AndYetAnotherException ex){
    doSomething();
}
catch(Exception ex){
    // Do something else
}

在 Java v7+ 中,我可以将其更改为:

try{
    // Do some things that can cause the exceptions
}
catch(SomeException | SomeOtherException | AndYetAnotherException ex){
    doSomething();
}
catch(Exception ex){
    // Do something else
}

由于 Android 尚不支持 Java 7+,因此我无法使用上述内容。改为执行以下操作的风险是什么:

try{
    // Do some things that can cause the exceptions
}
catch(Exception ex){
    if(ex instanceof SomeException || ex instanceof SomeOtherException || ex instanceof AndYetAnotherException){
        doSomething();
    }
    else{
        // Do something else
    }
}

我对instanceof没有足够的经验或知识,所以我不知道风险。是否有可能发生意想不到的结果?在运行时和/或编译期间是否有性能变化?等等

如果没有任何风险、高性能变化或意外结果,那么为什么不将 instanceof 用于单个捕获?但是,如果存在任何风险,我想最好使用 Android/Java 本身和幕后编译更好地支持的多个捕获。

最佳答案

您可以通过主菜单中的 Window > Preferences > Java > Compiler 更新 Eclipse 以使用 Java 7 语法检查(在 OS X IIRC 上用 Apple 菜单替换“Windows”)。

但是,请注意,您需要将 API 级别 19+ 作为构建 SDK(主菜单中的“项目”>“属性”>“Android”)。如果它较低,Eclipse/ADT 将不快乐,以大量红色像素的形式表达不快乐。

但是,如果您更改编译器设置并将构建 SDK 设置为 19+,这会启用 Java 7 语法,包括您的 SomeException |其他异常 | AndYetAnotherException 语法。

关于java - Android 不支持 Java v7+,所以我应该使用多个 catch 还是一个带有 instanceof 检查的 catch?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24574432/

相关文章:

c# - SmtpException 和 SmtpFailedRecipientException 之间有什么区别

java - 从 org.json JSONObject 到 org.codehaus.jackson

java - "Flip all"(Light Out) 游戏的任何算法?

java - MediaPlayer 在 Android 中工作,但没有进展

android - 我想让打开侧边栏时的 Activity 变小?

android - 如何使用 views.py 捕获从 android 发送到 Django 服务器的响应?

java - 查找以编程方式创建的 TextView?

java - 如何在 Java 中将未检查的异常转换/包装为已检查的异常?

java - 如何在 Java 中管理和编辑音频文件的元数据

java - Mule - 抛出异常直到成功