Intellij / Android Studio可以合并多个catch块吗?

时间:2016-09-06 07:58:17

标签: java android-studio inheritance intellij-idea exception-handling

我必须重构这样的事情:

class BarException extends FooException 

class BazException extends FooException 

try {
    // Some risky stuff
} catch (BarException e) {
    debug(e);
} catch (BazException e) {
    debug(e);
}

Intellij或Android Studio是否能够将catch块重写为:

} catch (FooException e) {
    debug(e);
}

3 个答案:

答案 0 :(得分:2)

最好的IDEA可以做的是自动创建

} catch (BarException | BazException  e) {
    debug(e);
}

要做到这一点,你可以进行检查"相同的' catch'分支机构尝试'语句"

(例如菜单分析 - >按名称运行检查)。

将其更改为" FooException"更改语义,因为无法自动证明没有其他FooException子类(在所有Java都可以动态加载新类之后)。 当然,你自己可能知道,所以重构是有道理的。

答案 1 :(得分:0)

在添加try catch之前,你可以做

  • 突出显示' //Some risky stuff'
  • 代码 - >环绕...... - >尝试/捕捉

答案 2 :(得分:0)

至少在IntelliJ Utimate 2018.2中,运行检查Identical 'catch' branches in 'try' statement(以“按名称运行检查”开始)之后,可以单击Collapse 'catch' blocks按钮自动合并catch语句