责编:乐乐 | 来源:小目前青年
链接:blog.csdn.net/qq_35387940/article/details/128406626
编程技术圈(ID:study_tech)第 3041 期推文
往日回顾:苹果为什么不敢对 12306 买票抽成 30% ?
正文
大家好,我是小乐。
前言
有个老哥昨天被面试官欺负了,但是是被这个问题(标题)欺负的?
其实是个比较基础的问题,只要有了解过,叙述是非常简单OK的。
正文
首先 , 话说在前头,
没有什么 在里面 好 和在外面好 或者 不好的 一说。
本篇文章内容:
使用场景 性能分析 个人看法
使用场景
为什么要把 使用场景 摆在第一个 ?
因为本身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:
在面试的时候,如果真的连上面这个在外面在里面使用效果都没说对,那,真的会去等通知了。
但是 之前不会的看官,看完这一篇, 肯定会了。
性能
时间上, 其实算是无差别。
内存上, 如果没出异常,其实也是无差别。
但是如果出现了异常, 那就要注意了。
注意点是什么 ?看代码:
我们简单用
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 放里放外没啥区别。
个人看法
其实就是看业务。我需要出现异常就终止循环的,就放外头;
不需要终止循环,就搞里头。
但是要注意一点就是,别在for循环里面去 查库调用第三方啥的,这些操作,如果必要,需要慎重考虑了。(别什么都搞里头!!!)
你还有什么想要补充的吗?
最后给大家推荐一个ChatGPT 4.0国内网站,是我们团队一直在使用的,我们对接是OpenAI官网的账号,给大家打造了一个一模一样ChatGPT,很多粉丝朋友现在也都通过我拿这种号,价格不贵,关键还有售后。
一句话说明:用官方一半价格的钱,一句话说明:用跟官方 ChatGPT4.0 一模一样功能,无需魔法,无视封号,不必担心次数不够。
最大优势:可实现会话隔离!突破限制:官方限制每个账号三小时可使用40次4.0本网站可实现次数上限之后,手动切换下一个未使用的账号【相当于一个4.0帐号,同享受一百个账号轮换使用权限】
为了跟上AI时代我干了一件事儿,我创建了一个知识星球社群:AI俱乐部与副业。想带着大家一起探索ChatGPT和新的AI时代。
有很多小伙伴搞不定ChatGPT账号,于是我们决定,凡是这三天之内加入ChatPGT的小伙伴,我们直接送一个正常可用的永久ChatGPT独立账户。
不光是增长速度最快,我们的星球品质也绝对经得起考验,短短一个月时间,我们的课程团队发布了8个专栏、18个副业项目:
简单说下这个星球能给大家提供什么:
1、不断分享如何使用ChatGPT来完成各种任务,让你更高效地使用ChatGPT,以及副业思考、变现思路、创业案例、落地案例分享。
2、分享ChatGPT的使用方法、最新资讯、商业价值。
3、探讨未来关于ChatGPT的机遇,共同成长。
4、帮助大家解决ChatGPT遇到的问题。
5、提供一整年的售后服务,一起搞副业
星球福利:
1、加入星球4天后,就送ChatGPT独立账号。
2、邀请你加入ChatGPT会员交流群。
3、赠送一份完整的ChatGPT手册和66个ChatGPT副业赚钱手册。
4、赠送一个月的ChatGPT 4.0 Plus系统池账号,价值98元。
5、赠送一份总价值5000元的ChatGPT视频教程。
其它福利还在筹划中... 不过,我给你大家保证,加入星球后,收获的价值会远远大于今天加入的门票费用 !
本星球第二期原价399,目前有优惠券,早鸟价159,每超过50人涨价10元,星球马上要来一波大的涨价,如果你还在犹豫,可能最后就要以更高价格加入了。。
早就是优势。建议大家尽早以便宜的价格加入!
PS:欢迎在留言区留下你的观点,一起讨论提高。如果今天的文章让你有新的启发,欢迎转发分享给更多人。
版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢!
最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。在这里,我为大家准备了一份2021年最新最全BAT等大厂Java面试经验总结。
别找了,想获取史上最简单的Java大厂面试题学习资料
扫下方二维码回复「面试」就好了
猜你还想看
牛逼啊!接私活必备的 400 多个开源项目!赶快收藏吧(附源码合集)!
用雪花 id 和 uuid 做 MySQL 主键,被领导怼了
项目从 MySQL 切换 PostgreSQL,踩了太多的坑!!!
嘿,你在看吗?