面试官问我 ,try catch 应该在for循环里面还是外面?

news2025/4/7 16:42:53


前言

有个老哥昨天被面试官欺负了,但是是被这个问题(标题)欺负的?

其实是个比较基础的问题,只要有了解过,叙述是非常简单OK的。

只要有初学者觉得有疑惑,那么我相信不止是他一个。

所以,我出手。

正文

首先 , 话说在前头,

没有什么 在里面 好 和在外面好  或者 不好的 一说。

本篇文章内容:


1. 使用场景

2. 性能分析

3. 个人看法

1. 使用场景 

为什么要把 使用场景 摆在第一个 ?
 
因为本身try catch 放在 for循环 外面 和里面 ,如果出现异常,产生的效果不一样的。

怎么用,就需要看好业务场景,去使用了。
 

① try  catch  在 for 循环 外面 

代码示例 :

​​​​​​​public static void tryOutside() {
    try {
        for (int count = 1; count <= 5; count++) {
            if (count == 3) {
                //故意制造一下异常
                int num = 1 / 0;
            } else {
                System.out.println("count:" + count + " 业务正常执行");
            }
        }
    } catch (Exception e) {
        System.out.println("try catch  在for 外面的情形, 出现了异常,for循环显然被中断");
    }
}

结果: 


效果结论: 

try  catch  在 for 循环 外面 的时候, 如果 for循环过程中出现了异常, 那么for循环会终止


② try  catch  在 for 循环 里面

代码示例 :

    public static void tryInside() {

        for (int count = 1; count <= 5; count++) {
            try {
                if (count == 3) {
                    //故意制造一下异常
                    int num = 1 / 0;
                } else {
                    System.out.println("count:" + count + " 业务正常执行");
                }
            } catch (Exception e) {
                System.out.println("try catch  在for 里面的情形, 出现了异常,for循环显然继续执行");
            }
        }
    }

结果: 

效果结论: 

try  catch  在 for 循环 里面 的时候, 如果 for循环过程中出现了异常,异常被catch抓掉,不影响for循环 继续执行

ps:

在面试的时候,如果真的连上面这个在外面在里面使用效果都没说对,那,真的会去等通知了。

但是 之前不会的看官,看完这一篇, 肯定会了。 


 2. 性能

时间上, 其实算是无差别。 

内存上, 如果没出异常,其实也是无差别。

但是如果出现了异常, 那就要注意了。

注意点是什么 ?  看代码:
 

我们简单用

Runtime runtime = Runtime.getRuntime();
long memory = runtime.freeMemory();

来统计一下内存消耗情况:

结论:
 

也就是说, try catch 放在 for 循环里面 ,因为出现异常不会终止 for循环。

所以如果真的存在大批量业务处理全是异常,有那么一定的内存消耗情况。

如果说代码没出错的话, try catch 在 for 里面 和 外面 ,都是几乎没区别的。

为啥, 因为 异常try catch 其实一早编译完就标记了 如果从哪儿(from)出现异常,会直接去到(to)的那行代码去。

Exception table : 当前函数程序代码编译涉及到的异常;

type : 异常类型;              

target:表示异常的处理起始位;              

from:表示 try-catch 的开始地址;            

to:表示 try-catch 的结束地址;

 所以如果不考虑业出错,是否终止循环, 这个try catch 放里放外没啥区别。

3. 个人看法

其实就是看业务。我需要出现异常就终止循环的,就放外头;

不需要终止循环,就搞里头。

但是要注意一点就是,别在for循环里面去 查库调用第三方啥的,这些操作,如果必要,需要慎重考虑了。(别什么都搞里头!!!) 

好了该篇就到这,最后附上交流群的复读机图,希望大家都身强体壮!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/109730.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

青少年等级考试【Python通关干货】(一级)

青少年等级考试【Python通关干货】&#xff08;一级&#xff09; 1. 编程模式 1&#xff09;交互式编程 在交互式环境的提示符>>>下&#xff0c;直接输入代码&#xff0c;按回车&#xff0c;就可以立刻得到代码执行结果。 交互式编程缺憾是没有保存下来&#xff0c;下…

2023 目标,与君共勉

新的一年&#xff0c;立一些目标&#xff0c;与君共勉 技术相关目标 csdn申请专业领域创作认证通过、博客专家认证通过掘金创作等级可以达到LV6等级掘金发表两个小册&#xff0c;有50人以上订阅csdn原先的进阶专栏&#xff0c;增加到100篇文章&#xff0c;有50人以上订阅csdn…

2021地理设计组一等奖:面向游客的旅游路线优化设计——以丹霞山景区为例

作品简介 一、背景与意义 随着旅游业的快速发展与人们对旅行质量要求的提升&#xff0c;旅游者对旅游服务的内容要求也越来越高&#xff0c;其中的旅游导航便是一项需求率极高的服务。然而传统的导航服务多是基于时间或距离成本进行网络分析而提供的路径设计&#xff0c;极少考…

R16 Dormant BWP

微信同步更新欢迎关注同名modem协议笔记 接上篇BWP结尾&#xff0c;R15时SCell的激活和去激活是通过Pcell的MAC CE&#xff0c;R16在Scell上引入dormant BWP的概念&#xff0c;可以通过DCI 控制Scell在dormant BWP和non-dormant BWP间进行切换&#xff0c;相比于MAC CE的控制方…

SpringBoot 基于 OAuth2 统一身份认证流程详解

1. 目标 了解OAUTH2统一认证基本概念了解OAUTH2协议流程了解OAUTH2各种模式类型了解Spring Security OAuth设计 2. 分析 传统登陆认证介绍 单点登陆认证介绍 OAuth2简介 OAuth2角色 OAuth2协议流程介绍 OAuth2授权类型 OAuth2授权码模式流程 OAuth2简化模式 OAuth2密码…

JavaScript 入门基础 / 概念介绍(一)

JavaScript 入门基础 / 概念介绍&#xff08;一&#xff09; 1.初识JavaScript 1.1 JavaScript历史 1995年&#xff0c;网景公司一名程序员布兰登艾奇利用十天完成了JavaScript设计&#xff0c;网景公司最初将它命名为LiveScript&#xff0c;后与Sun公司合作将其改名为JavaS…

外行人如何通过学习软件测试转行IT

随着互联网的快速发展&#xff0c;现在很多行业都被智能化取代&#xff0c;IT行业从业人员剧增&#xff0c;很多不是IT行业的人都想转行IT&#xff0c;那么对于不是IT行业的人&#xff0c;如何能快速转行变成IT人呢&#xff1f;软件测试是你最好的选择。对于一个不是本行业的人…

内科大深度学习期末复习笔记

文章目录一.选择判断1.1矩阵与 神经网络模型 与 深度学习模型 关系1.2 机器学习 与 深度学习 在训练数据中的区别1.3点乘与叉乘区别1.4 深度学习模型 浅层与深层 关系1.5线性关系与非线性 权重和偏置1.6 超参数&#xff08;训练数据与可调整数据&#xff08;var&#xff09;&am…

10年经验hr亲授:刷完阿里P8架构师的RocketMQ核心手册,进大厂稳了

为什么要选择RocketMQ? 市场上几大消息队列对比如下&#xff1a; 总结一下&#xff1a; 选择中间件的可以从这些维度来考虑&#xff1a;可靠性&#xff0c;性能&#xff0c;功能&#xff0c;可运维行&#xff0c;可拓展性&#xff0c;社区活跃度。目前常用的几个中间件&…

基于容器的PaaS混合云的几种形式

概述 这是 Gartner 的一个图&#xff0c;提供了全球的基于容器的 PaaS 公有云、混合云服务的梳理展示&#xff1a; 这里提供一个其他的视角&#xff1a; 中国市场&#xff0c;基于容器的 PaaS 混合云&#xff08;公有云 私有云&#xff09;的相关厂商及产品。 ❗️ 注意&am…

PyTorch笔记 - Batch\Layer\Instance\Group\Weight Normalization 源码

欢迎关注我的CSDN:https://blog.csdn.net/caroline_wendy 本文地址:https://blog.csdn.net/caroline_wendy/article/details/128416962 Normalization in NN: Batch Normalization: per channel across mini-batchtorch.nn.BatchNorm1d / torch.nn.BatchNorm2dLayer Normaliz…

2023世界杯新媒体传播热点盘点 中国元素之中国馆、富而喜悦!

2022年卡塔尔世界杯于上周日落幕&#xff0c;作为“后新冠时代”的首个大型全球体育赛事&#xff0c;也同时被多个“史上首次”与“历史之最”所装点。作为普通球迷亦或资深网友的你&#xff0c;对本届世界杯的流行趋势与媒体热点有多少了解呢&#xff1f;富而喜悦&#xff0c;…

RISCV-V-1.0向量扩展指令集学习

大部分内容翻译自 riscv-v-spec-1.0 部分参考&#xff1a; 【《RISC-V “V“ Vector Extension Version 1.0》阅读笔记】_LPL之芯的博客-CSDN博客 RISC-V “V”(向量)扩展规范v0.9文档&#xff08;2&#xff09; - 知乎 (zhihu.com) 文章目录3. Vector Extension Programmers M…

开放下载丨2023年二十万字技术年货新鲜送达

文章目录一、再谈数字化二、关于技术合集三、思想沉淀与书写价值四、写在最后一、再谈数字化 21世纪是无可争议的数字时代。过去20多年来&#xff0c;中国企业踏上了一个伟大而又艰难的数字化转型征程。虽然在行业数字化转型的深度和广度方面&#xff0c;头部企业已经相当领先…

IU酒店打造齐鲁文化旅游发展新高地

淄博&#xff0c;位处鲁中&#xff0c;是黄河三角洲生态经济和蓝色经济区的交汇处。四季分明的气候造就了这座齐国故都的生态多样性&#xff0c;南高北低的地理位置使其峻岭平原兼具&#xff0c;鲁中的位置又赋予他交通枢纽的重要性。这里历史气息浓厚&#xff0c;社会文化自由…

@SuppressWarnings使用-屏蔽一些无关紧要的警告

SuppressWarnings 用法 与idea设置相关-参考 作用&#xff1a;用于抑制编译器产生警告信息&#xff0c;不显示波浪提示线。 我们在写代码的时候&#xff0c;不论是导入的包&#xff0c;还是声明的对象&#xff0c;有时候会出现黄线&#xff0c;感觉就很难受&#xff01; Su…

TensorFlow性能分析调研

文章目录背景&#xff1a;一、tensorflow的训练模式2.2.1 with tf.profiler.experimental.Profile(logdir,optionsoptions):背景&#xff1a; 进行性能分析的过程中&#xff0c;不可避免地在训练的过程中加入相关语句&#xff0c;以输出相应的日志文档&#xff0c;方便后续的性…

作为码农的我,要怎么提高自己的收入?

打工人是不是都会想同一个问题&#xff1a;我怎么赚大钱&#xff1f; 作为码农的我&#xff0c;实在不知道该如何提高自己的收入&#xff0c;首付凑不齐房子买不了&#xff0c;生活怎么样才能过的更好一些&#xff1f; 今天&#xff0c;就来说说&#xff0c;作为程序员&#…

【数据结构进阶】红黑树【TreeMap TreeSet底层就是红黑树】

红黑树【TreeMap TreeSet底层就是红黑树】 概念 红黑树是一种二叉搜索树&#xff0c;但在每个结点上增加一个存储位表示结点的颜色&#xff0c;可能是Red或者Black。通过对任何一条从根到叶子结点着色方式的限制&#xff0c;红黑树确保没有一条路径会比其他路径长出两倍&…

【数据库内核分析系列】:数据库索引的创建过程

文章目录普通表索引DefineIndeIndex_create函数index_build分区表索引数据库索引可以提高数据的访问速度&#xff0c;openGauss支持唯一索引、多字段索引、部分索引和表达式索引。行存表&#xff08;ASTORE存储引擎&#xff09;支持的索引类型&#xff1a;btree&#xff08;行存…