You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写更优的带变量赋值的try-catch代码块?

优化异常捕获式变量赋值的样板代码

日常开发里常碰到这种场景:给变量赋值时,需要执行可能抛出异常的方法,捕获异常后给变量设回退值。原来的写法要好几行,明明只是个简单的回退逻辑,却要写一堆样板代码。

针对你给出的这段代码:

List<String> mylist;
try {
    mylist = readFile(resource);
} catch (Exception e) {
    mylist = List.of();
}

最简洁且易维护的优化方式是封装通用工具方法,把try-catch的逻辑抽出来复用:

// 把这个方法放在项目的通用工具类里
public static <T> T getOrDefault(Supplier<T> supplier, T defaultValue) {
    try {
        return supplier.get();
    } catch (Exception e) {
        // 不需要处理异常的话直接忽略,按需也可以加日志
        return defaultValue;
    }
}

之后使用时只需要一行代码,完全符合你想要的简洁效果:

List<String> mylist = getOrDefault(() -> readFile(resource), List.of());

这个工具方法是泛型实现,不管你要赋值的是List、String还是其他类型,都能直接复用。如果需要针对特定异常捕获(比如只抓IOException而非所有Exception),也可以修改工具方法里的catch语句,灵活性很高。

如果只是临时用一次不想写工具类,也可以把逻辑内联,但可读性和复用性都会差很多,不如工具方法方案实用。

内容的提问来源于stack exchange,提问作者membersound

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 01:42:03