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

这篇具有很好参考价值的文章主要介绍了面试官:try-catch 到底写在循环里面好,还是外面好?大部分人都会答错!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题

面试官:

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

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

到底写在哪里好?

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

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

try {
	for (...){
		// 处理逻辑
	}
} catch(Exception e) {
	...
}

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

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

for (...){
	try {
    	// 处理逻辑
    } catch(Exception e) {
        ...
    }
}

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

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

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

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

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

应用场景

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

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

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

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

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

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

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

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

总结

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

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

好了,今天的分享就到这里了,后面栈长会分享更多好玩的 Java 技术和最新的技术资讯,关注公众号Java技术栈第一时间推送,我也将主流 Java 面试题和参考答案都整理好了,在公众号后台回复关键字 "面试" 进行刷题。

最后,觉得我的文章对你用收获的话,动动小手,给个在看、转发,原创不易,栈长需要你的鼓励。

版权声明: 本文系公众号 "Java技术栈" 原创,转载、引用本文内容请注明出处,抄袭、洗稿一律投诉侵权,后果自负,并保留追究其法律责任的权利。

近期热文推荐:

1.1,000+ 道 Java面试题及答案整理(2022最新版)

2.劲爆!Java 协程要来了。。。

3.Spring Boot 2.x 教程,太全了!

4.别再写满屏的爆爆爆炸类了,试试装饰器模式,这才是优雅的方式!!

5.《Java开发手册(嵩山版)》最新发布,速速下载!

觉得不错,别忘了随手点赞+转发哦!文章来源地址https://www.toymoban.com/news/detail-601834.html

到了这里,关于面试官:try-catch 到底写在循环里面好,还是外面好?大部分人都会答错!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++/Qt中异常处理try-catch语句的使用方式及场景案例

    try-catch语句用于捕获和处理异常,它的基本语法如下: ```cpp try {     // 可能会抛出异常的代码块 } catch (ExceptionType1 e1) {     // 处理 ExceptionType1 类型的异常 } catch (ExceptionType2 e2) {     // 处理 ExceptionType2 类型的异常 } catch (...) {     // 处理其他类型的异常 } ``` 在try块中,我

    2024年02月12日
    浏览(38)
  • 详解Java中的异常体系结构(throw,throws,try-catch,finally,自定义异常)

    目录 一.异常的概念 二.异常的体系结构 三.异常的处理 异常处理思路 LBYL:Look Before You Leap EAFP: It\\\'s Easier to Ask Forgiveness than Permission 异常抛出throw 异常的捕获 提醒声明throws  try-catch捕获处理 finally的作用 四.自定义异常类 有一句话说的很好 ”程序员不是在写BUG就是在改BUG”

    2024年02月05日
    浏览(33)
  • 前端try和catch

    为什么要使用try catch 使用 try...catch 语句是为了处理和管理可能会在程序运行过程中发生的异常或错误情况。以下是一些使用 try...catch 的主要原因: 错误处理:在开发过程中,无法避免地会出现各种错误,如网络请求失败、数据解析错误、未定义的变量引用、不合法的操作等

    2024年02月07日
    浏览(29)
  • try、catch语句解析

    try-catch 语句是JavaScript中的一种 处理异常 的方式。 它的执行规则如下:首先会执行try中的代码,如果异常则会通过throw抛出异常,而catch会捕获抛出的异常。 在代码执行过程中,如果遇到错误会立即停止执行,转而进入catch语句当中。 在 try-catch 语句中,二者都是可选择的。

    2024年02月15日
    浏览(29)
  • try catch 嵌套

    在单元测试中写入以下方法: testMain() 主方法, out() 里面嵌套了两层try catch 异常代码写在内层try中 示例一: 日志信息: 可以看到,内层try中的异常由 内层catch处理 了,外层catch并未处理,主方法后续业务逻辑并未受到影响,可正常执行. 示例二: 内层try catch中添加 throw new Ru

    2024年02月06日
    浏览(28)
  • C# try catch 使用

    try catch使用场景: 1. 一般在线程,委托中使用, 在线程与委托中使用是因为,如果线程和委托中出现异常在程序外部是捕获不到的,需要在内部做单独处理。 2. 程序的外层使用,比如程序的入口处加一个全局异常捕获,这样整个程序发生的异常都可以捕获到。 3. 在事件或

    2024年02月09日
    浏览(33)
  • try catch执行过程分析

    本篇文章带大家聊聊try catch的执行过程,有时候在开发的过程中,try代码里如果出现异常,catch后的步骤还会继续执行吗?以及finally的使用。 下面来分析一下几种使用场景: 场景一: try代码块中出现异常后,系统会继续执行catch代码块的程序。catch代码块外的代码也会继续被

    2024年02月15日
    浏览(33)
  • Java try catch语句详解

    在实际应用中,对于错误的处理是极其重要的,任何程序都很难做到百分百完美,程序中可能存在大量未知问题,所以程序开发时一定要对各种问题进行相应的处理,而 Java 提供的异常处理机制可以帮用户更好地解决这方面的问题。 Java 的异常处理机制可以让程序具有极好的

    2024年02月08日
    浏览(31)
  • 记录--try...catch知识补全

    说到 try...catch 都觉得非常熟悉了,不就是用来捕捉代码块中的错误嘛,平时也用得比较多的。然而因为了解不够多,我的面试却栽在了一个简单的知识点上: try...catch 只能捕捉到同步执行代码块中的错误 。 题目是:以下代码有错吗?如果有错,应该如何改正? 反正就是不

    2024年02月04日
    浏览(32)
  • 深入理解try...catch(字节码层面)

    我们工作中常用try...catch来解决程序中出现的异常情况,但是你真的了解它的实现原理吗?今天我就带着大家从字节码层面理解try...catch 我们首先需要准备好异常类和对应的测试类方便我们观察。 异常类: 测试类: 在idea中编译后,使用jclasslib插件即可查看对应的字节码,字

    2024年02月02日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包