【问题标题】:Can Intellij / Android Studio merge multiple catch blocks into one?Intellij / Android Studio 可以将多个 catch 块合并为一个吗?
【发布时间】:2016-09-06 07:58:17
【问题描述】:

我必须重构这样的东西:

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);
}

【问题讨论】:

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


    【解决方案1】:

    IDEA 能做的最好的就是自动创建

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

    为此,您可以运行检查“'try' 语句中的相同'catch' 分支”

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

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

    【讨论】:

      【解决方案2】:

      在添加一组try catch之前,你可以这样做

      • 突出显示“//Some risky stuff
      • 代码 -> 环绕... -> try/catch

      【讨论】:

      • 是的。抱歉,我一开始忘了说我正在重构。
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-30
        • 2014-03-17
        • 2011-05-01
        • 2016-12-03
        • 2023-03-05
        • 1970-01-01
        • 1970-01-01
        • 2021-05-12
        相关资源
        最近更新 更多