如何编写更优的带变量赋值的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
相关产品推荐
相关产品推荐

