try catch会影响性能么

前言

今天 code review 时发现某个同事的代码中存在滥用try catch的现象。其实这种行为我们也许都经历过,刚参加工作想尽量避免出现崩溃问题,因此不可避免得想在所有可能抛出异常的地方都try catch一下。

当然,这种行为肯定是不可取的。如果这样,那还不如所有逻辑都包在大大的try catch里好了。代码的是否具有高健壮性必然是代码是否高效优雅决定的。

当然,这个也引起我的思考,try catch会影响性能么?

结论

try catch不会影响性能。——严格意义上说是微乎其微。

这个结论的确很难让人接受,最起码与我的预估不大一样。

按照我的想法,当代码中出现的各种特性越多,轻量点的如enum,重一点的如“反射”,必然会增加更多的开销。

然而,从结果看,在没有抛出异常时,try catch的影响跟添加了一个 if else是同一个量级的。也就是说,我们完全可以忽视try catch耗费的那点性能。

网上已经有很多人总结了结论,我也就不重复造轮子了。此结论经过多方验证,应该无误,如有不同意见,请留言评论:

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

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

推荐阅读

偷懒是程序员的美德。我也就不重复造轮子了。
Java上的try catch并不影响性能

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值