资讯专栏INFORMATION COLUMN

Java性能优化-慎用异常

hufeng / 2375人阅读

摘要:当创建一个异常时,需要收集一个栈跟踪,这个栈跟踪用于描述异常是在何处创建的。招致性能损失的并不是操作尽管在没有预先创建异常的情况下就抛出异常是有点不寻常。异常是为异常的情况而设计的,使用时也应该牢记这一原则。

当创建一个异常时,需要收集一个栈跟踪(stack track),这个栈跟踪用于描述异常是在何处创建的。构建这些栈跟踪时需要为运行时栈做一份快照,正是这一部分开销很大。

当需要创建一个 Exception 时,JVM 不得不说:先别动,我想就您现在的样子存一份快照,所以暂时停止入栈和出栈操作。栈跟踪不只包含运行时栈中的一两个元素,而是包含这个栈中的每一个元素。

如果您创建一个 Exception ,就得付出代价,好在捕获异常开销不大,因此可以使用 try-catch 将核心内容包起来。从技术上讲,你甚至可以随意地抛出异常,而不用花费很大的代价。

招致性能损失的并不是 throw 操作——尽管在没有预先创建异常的情况下就抛出异常是有点不寻常。真正要花代价的是创建异常,幸运的是,好的编程习惯已教会我们,不应该不管三七二十一就抛出异常。异常是为异常的情况而设计的,使用时也应该牢记这一原则。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/74781.html

相关文章

  • Effective Java 第三版 全文翻译

    摘要:本章中的大部分内容适用于构造函数和方法。第项其他方法优先于序列化第项谨慎地实现接口第项考虑使用自定义的序列化形式第项保护性地编写方法第项对于实例控制,枚举类型优先于第项考虑用序列化代理代替序列化实例附录与第版中项目的对应关系参考文献 effective-java-third-edition 介绍 Effective Java 第三版全文翻译,纯属个人业余翻译,不合理的地方,望指正,感激...

    galois 评论0 收藏0
  • Effective Java 3rd.Edition 翻译

    摘要:推荐序前言致谢第一章引言第二章创建和销毁对象第项用静态工厂方法代替构造器第项遇到多个构造器参数时要考虑使用构建器第项用私有构造器或者枚举类型强化属性第项通过私有构造器强化不可实例化的能力第项优先考虑依赖注入来引用资源第项避免创建不必要的对象 推荐序 前言 致谢 第一章 引言 第二章 创建和销毁对象 第1项:用静态工厂方法代替构造器 第2项:遇到多个构造器参数时要考虑使用构建器 第...

    KoreyLee 评论0 收藏0
  • 44个Java代码性能优化总结

    摘要:代码优化的最重要的作用应该是避免未知的错误。此举能够使性能平均提高。抛出异常首先要创建一个新的对象,接口的构造函数调用名为的本地同步方法,方法检查堆栈,收集调用跟踪信息。异常只能用于错误处理,不应该用来控制程序流程。 showImg(https://segmentfault.com/img/remote/1460000015379073); 代码优化的最重要的作用应该是:避免未知的错误...

    YanceyOfficial 评论0 收藏0
  • 实用 | 35个可以提高千倍效率的Java代码小技巧

    摘要:此举能够使性能平均提高。尽可能使用局部变量调用方法时传递的参数以及在调用中创建的临时变量都保存在栈中速度较快,其他变量,如静态变量实例变量等,都在堆中创建,速度较慢。 showImg(https://segmentfault.com/img/bVbsIIl?w=900&h=383);本文来源 | http://atjf.top/3WLPmG 作者 | 萌小Q 01前沿 代码优化 ,一个...

    NikoManiac 评论0 收藏0
  • 慎用try catch

    摘要:捕获不到异步错误尝试对异步方法进行操作只能捕获当次事件循环内的异常,对执行时抛出的异常将无能为力。这里并不能捕获回调里面抛出的异常异步情况想捕获异常,建议在异步函数里包一层。前端可以用在上传图片使用别人的库报错同步调接口等地方适用。 前言 自从ECMA-262第3版引入了try catch语句,作为JavaScript中处理异常的一种标准方式。基本的语法如下所示。 一、try catc...

    lvzishen 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<