企图利用java的错误判断机制来提升性能是错误的:
1.由于异常机制的设计初衷是用于不正常的情形,因此不多会有JVM实现试图对它们进行优化,使得与显式的测试同样快速。
2.把代码放在try-catch块中反而阻止了如今JVM实现原本可能要执行的某些特定优化。
3.对数组进行遍历的标准模式并不会致使冗余的检查。有些如今的JVM实现会将它们优化掉。
异常应该只用于异常的状况下;它们永远不该该用于正常的流程控制。
设计良好的API不该该强迫它的客户端为了正常的控制流而使用异常。
“状态测试方法”和“可识别的返回值”:
若是对象将在缺乏外部同步的状况下被并发访问,或者可被外界改变状态,使用可被识别的返回值多是颇有必要的,由于在调用“测试状态”方法和调用对应的“状态相关”方法的时间间隔之中,对象的状态有可能发生变化。若是单独的“状态测试”方法必须重复“状态相关”方法的工做,从性能的角度考虑,就应该使用可被识别的返回值。若是全部其余方面都是等同的,那么“状态测试”方法则略犹豫可被识别的返回值。
总而言之,异常是为了在异常状况下使用而设计的。不要将它们用于普通的控制流,也不要编写迫使他们这么作的API。