2019独角兽企业重金招聘Python工程师标准>>>

当我们写程序时遇到可能出现异常的地方我们习惯用try catch增加程序的健壮性,但是try  catch的位置呢,有时候我们也是随便放一个地方,只要程序不报错就行,可是如果碰到循环的情况呢?比如这个:

public class Demo {
    
        public static void func0(){
            for(int i=0;i<1000;i++){
                try {
                    System.out.println(1/0);
                } catch (Exception e) {
                    System.out.println("i am exception");
                }
            }
        }
 
}
给我的直观感觉是我必须把try catch移到外面:
public class Demo {
    
        public static void func0(){
            try {
                for(int i=0;i<1000;i++){
                        System.out.println(1/0);
                }
            } catch (Exception e) {
                System.out.println("i am exception");
            }
        }
 
}
因为我感觉try  catch放里面貌似声明了1000遍,性能差别可想而知,事实果真如此吗?下面我们就借助java提供的反汇编工具
javap -c Xxx.class xxx.txt从指令级别来一探究竟!

1.javac Demo.java

2.javap -c Demo.class > xxx.txt

3.打开xxx.txt

如果try catch放外面的话生成的指令信息为:

放里面生成的指令信息为:

可以看到try catch放循环里面的话,指令级别上并不是多了1000多个try  catch相关的指令,唯一的区别就是i<1000和syso(1/0)之间隔了try catch的指令,需要用goto跳转一下而已,而这些区别可以忽略不计,所以当不发生异常的时候try  catch放循环内部和循环外部无所谓了,只有当发生异常时看你则么处理异常了,这就和本文讨论的无关了

结论:

当循环内的代码出现异常,需要结束循环时,将try代码块放在循环外;

当循环内的代码出现异常,需要继续执行循环时,将try代码块放在循环内。

转载于:https://my.oschina.net/u/2277088/blog/3028570

try catch 对于循环体,应放在外面还是里面?相关推荐

  1. C++类的内联成员函数应放在哪

    今天复习C++ Primer的时候,看到了关于C++类的内联成员函数的放置,应该放在头文件中.那么这到底是为什么 呢?仅仅是一种代码规范问题还是必须这样做呢? 下面我就来讲讲我自己的理解吧.要彻底理解 ...

  2. maven打包java项目为可执行jar文件,资源文件放在外面

    一.maven打包 一.maven打包配置文件和jar包放在外面 参考文档 1.1 用eclipse的Maven打包后在target目录 1.2 POM文件的build依赖 <build> ...

  3. c语言练习7——求出小于或等于lim的所有素数应放在aa数组中

    功能:求出小于或等于lim的所有素数应放在aa数组中,并返回所求出素数的个数 思路:1)使用for循环查找所有小于lim的数: 2)使用内循环判断是否为素数: #include<conio.h& ...

  4. php clearinterval,为什么把 clearInterval 放在外面清除不了 setInterval

    谁能帮我一步步分析下JS的 " onmousedown事件 " 代码,指出问题所在.源代码如下: Document body,div,ul,li{ padding: 0; marg ...

  5. java 循环new对象_java中new一个对象放在循环体里面与外面的区别

    首先说下问题: 这次在做项目的是出现了一个new对象在循环里面与外面造成的不同影响. 大家可以看到这个new的对象放在不同的位置产生的效果是不一样的. 经过多方查询与验证可以得出结论: * EasyU ...

  6. Science | COVID-19大流行期间,研究重点应放在高质量研究

    2020年5月1日,<科学>杂志刊登了一篇文章"Against pandemic research exceptionalism".科学家在新的评论中指出,不应仅因为C ...

  7. c++ 初始化 代码 应放在那里_Go语言goroutine调度器初始化 (12)

    先吐槽一下,知乎编辑器居然不支持汇编语言,代码的空格也给我弄没了,你说你把运算符两边的空格搞掉就搞掉吧,还能看,你为啥要把if, for后面的空格也搞掉啊... 本文是<Go语言调度器源代码情景 ...

  8. 放授权代码的php文件夹,自己的项目如果包含别人的开源代码,licence文件应放在哪里...

    以下是licence文件内容 Copyright (c) 2008 Alan Szlosek Permission is hereby granted, free of charge, to any ...

  9. JavaScript应放在页面的什么地方

    在页面脚步编写中,初学者经常会碰到JavaScript放在页面什么地方的疑惑,网上答疑者给出的答案基本一致,这里简单作了一下整理,并分析一下为什么要这样和为什么可以不这样: 一.JavaScript代 ...

最新文章

  1. 周立功-成功心法(2):通过讲故事营销自己
  2. 深入浅出解释FFT(四)——fft分析信号频率和相位
  3. python爬虫个人小结
  4. 用Flash模拟小车
  5. 查看mysql某人执行了什么语句_详解MySQL如何监控系统全部执行过的sql语句
  6. shutdown的几种方式,shutdown abort的一些弊端有哪些
  7. 一张图了解Spring Cloud微服务架构
  8. javaScript语法基础
  9. 【Spring-IOC】依赖注入
  10. JavaScript hash 与 history 实现客户端路由的原理
  11. STM8S003国产替代 DP32G003 32 位微控制器芯片
  12. 抖音为什么这么火?抖音用户暴涨的秘密在哪?
  13. 【linux】理解 export PATH、LIBRARY_PATH、 LD_LIBRARY_PATH
  14. java输出excel 异常处理_使用poi导出Excel,并设定单元格内容类型,抛出异常
  15. 织梦dedecms源码安装方法 织梦安装教程(图文)
  16. 始祖双碳新闻 | 2022年8月12日碳中和行业早知道
  17. 一文读懂供应链金融及其衍生产品
  18. 你的爱车真的洗干净了吗?留神这些被洗车店忽略的死角!
  19. 93---Python 极坐标系下绘制椭圆
  20. ESD静电保护二极管丝印查询,SOD-323封装型号大全

热门文章

  1. 我的MYSQL学习心得(十一) 视图
  2. Server系列18:如何通过组策略赋予domain user受限网络管理权限?
  3. zz在Ubuntu中通过源码安装编译安装软件(MySQL篇)
  4. 杂读 May 12,2008
  5. x为正变数,求y=x^3/(x^4+4)的最大值
  6. 关于CSS 里的_width是什么意思???
  7. SQL Server 作业监控
  8. 合并表格中同一列中相同的内容
  9. ActiveMQ 使用文档
  10. 跨林迁移用户、计算机、邮箱(1)