我有以下情况:
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/