前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面试官:try-catch 到底写在循环里面好,还是外面好?大部分人都会答错!

面试官:try-catch 到底写在循环里面好,还是外面好?大部分人都会答错!

作者头像
Java技术栈
发布2023-09-06 08:41:40
2100
发布2023-09-06 08:41:40
举报
文章被收录于专栏:Java技术栈Java技术栈

国内最强微服务框架,没有之一!

几乎覆盖 Spring Boot 所有操
2023 全新 Java 面试题(2500+
问题

面试官:

try-catch 到底写在循环里面好,还是外面好?

这个问题,我相信大部分人都会答错!

到底写在哪里好?

很多人会说当然写在循环外面好,也有一部分人说写在循环里面好,其实这两种回答都不完全对,我们来分析下两者的弊端。

try-catch 写在循环外面的弊端:

代码语言:javascript
复制
try {
 for (...){
  // 处理逻辑
 }
} catch(Exception e) {
 ...
}

如果 try-catch 写在循环外面,一条数据处理异常,循环结束,会导致整个任务的结束,严重影响系统效率。

try-catch 写在循环里面的弊端:

代码语言:javascript
复制
for (...){
 try {
     // 处理逻辑
    } catch(Exception e) {
        ...
    }
}

因为异常处理会影响效率,如果 try-catch 写在循环里面,会造成过多的、没有必要的循环异常处理,会严重影响系统效率。

这一点在阿里巴巴的《Java开发手册》异常处理中也有相关提及:

这里提到了异常的处理效率,确实相对较低,如果循环中写 try-catch,异常不发生或者少发生就还好,如果异常发生较多,系统效率肯定会降低。这个完整版手册可以关注公众号Java核心技术,在后台回复关键字 "手册" 获取。

所以,不管写在哪里,这个要看实际情况,要结合具体业务再做出具体的选择的,并不是绝对的写在哪里就一定好或者不好。

应用场景

下面我总结一下两者的应用场景,欢迎留言补充!

try-catch 适合写在循环外面的场景:

1)一条数据处理异常,需要停止后面的数据处理;

2)不能接受任意数据处理异常,如在事务方法中,需要整体成功或者失败,这时一条数据处理异常,就需要停止循环后面的数据处理,同时需要回滚循环中所有已处理过的数据;

try-catch 适合写在循环里面的场景:

1)一条数据处理异常,不能影响其他数据的处理;

2)能接受少部分的数据处理异常,而不影响整体数据处理;

如果是连接超时异常类,如果要写在循环里面,可以设置在超过 N 条连接超时后强制退出循环,一方面排除了网络波动,服务可能真的出现故障,这时可以避免过多没有必要的请求超时,待服务恢复后再重试;

总结

目前没有规范说一定要写在哪里比较好,try-catch 写在循环里面或者外面都可以,上面分析了两者的弊端和应用场景,我们也可以根据实际业务场景作出选择。

对于这个面试题,你有什么想分享的呢?欢迎留言讨论~!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java技术栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 到底写在哪里好?
  • 应用场景
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档