您的位置 首页 java

Java 中的 try catch 影响性能吗?

在实际项目中, io ,数据库,网络等等,不可避免会发生未知异常,try catch 可以有效的避免页面崩溃,网上有人说一个页四五个try catch影响效率

问题:A 和B在性能上的区别在哪?

A:

B:

其实在功能上明显有区别,一个 for循环 中出现一个异常就终止,另一个则是会很负责任的把它全部跑完,但问题不是问功能,而是问性能上的区别。

性能无非就是看 空间消耗,时间消耗 ,想当然就觉得try catch重复执行了这么多次肯定比只执行了一次跑得肯定慢,空间消耗肯定更大。

把我自己理解的核心给大家分享一下:

1、类会跟随一张 异常表(exception table),每一个try catch都会在这个表里添加行记录,每一个记录都有4个信息(try catch的开始 地址 ,结束地址,异常的处理起始位,异常类名称)。

2、当代码在运行时抛出了异常时,首先拿着抛出位置到异常表中查找是否可以被catch(例如看位置是不是处于任何一栏中的开始和结束位置之间),如果可以则跑到异常处理的起始位置开始处理,如果没有找到则原地return,并且copy异常的引用给父调用方,接着看父调用的异常表。。。以此类推。

综合上面来看可以得出结论:

1、异常如果没发生,也就不会去查表,也就是说你写不写try catch 也就是有没有这个异常表的问题,如果没有发生异常,写try catch对性能是木有消耗的,所以不会让程序跑得更慢。

2、try 的范围大小其实就是异常表中两个值(开始地址和结束地址)的差异而已,也是不会影响性能的。

当然try catch绝对不是在什么地方都可以乱加的!怎么用,很多地方都有说,就不在这累赘了。大家有何看法,可以评论下方说一说?

文章来源:智云一二三科技

文章标题:Java 中的 try catch 影响性能吗?

文章地址:https://www.zhihuclub.com/187959.shtml

关于作者: 智云科技

热门文章

网站地图