Effective Java 学习笔记(第57条:只针对异常的情况才使用异常)
2014-04-03 16:42
274 查看
企图利用java的错误判断机制来提高性能是错误的:1.因为异常机制的设计初衷是用于不正常的情形,所以很少会有JVM实现试图对它们进行优化,使得与显式的测试一样快速。2.把代码放在try-catch块中反而阻止了现在JVM实现本来可能要执行的某些特定优化。3.对数组进行遍历的标准模式并不会导致冗余的检查。有些现在的JVM实现会将它们优化掉。异常应该只用于异常的情况下;它们永远不应该用于正常的流程控制。设计良好的API不应该强迫它的客户端为了正常的控制流而使用异常。“状态测试方法”和“可识别的返回值”:如果对象将在缺少外部同步的情况下被并发访问,或者可被外界改变状态,使用可被识别的返回值可能是很有必要的,因为在调用“测试状态”方法和调用对应的“状态相关”方法的时间间隔之中,对象的状态有可能发生变化。如果单独的“状态测试”方法必须重复“状态相关”方法的工作,从性能的角度考虑,就应该使用可被识别的返回值。如果所有其他方面都是等同的,那么“状态测试”方法则略犹豫可被识别的返回值。总而言之,异常是为了在异常情况下使用而设计的。不要将它们用于普通的控制流,也不要编写迫使他们这么做的API。
相关文章推荐
- Effective Java学习笔记: 第58条 对可恢复的情况使用受检异常,对于编程错误使用运行时异常
- Effective Java学习笔记: 第59条 避免不必要地使用受检的异常
- Effective Java学习笔记 第60条: 优先使用标准的异常
- java学习笔记(一) 继承的使用情况
- Java:Effective Java 学习笔记(第48条:如果需要精确的答案,请避免使用float和double)
- Effective Java之对可恢复的情况使用受检异常,对编程错误使用运行时异常(五十八)
- Effective Java 学习笔记(第61条:抛出与抽象相对应的异常)
- Effective Java 学习笔记 使用静态工厂方法代替构造器
- Effective Java学习笔记 第61条: 抛出与抽象相对应的异常
- Java学习笔记 50. 三种不能使用方法覆盖的情况
- 2015070404 - EffactiveJava笔记 - 第57条 只对异常使用异常(1)
- Effective Java 学习笔记之第七条——避免使用终结(finalizer)方法
- 2015070405 - EffactiveJava笔记 - 第57条 只对异常使用异常(2)
- Effective Java 学习笔记(第62条:每个方法抛出的异常都要有文档)
- Effective Java学习笔记: 第57条只针对异常的情况才使用异常
- Effective Java学习笔记 第65条:不要忽略异常
- 使用java调用hadoop接口学习笔记
- 黑马程序猿 JAVA基础学习笔记 异常等
- Java学习笔记:JNI的使用(2016年1月13日14:21:45)
- [每日学习笔记][2012.07.10]使用Java理解程序逻辑(五)