第69条 只针对异常的情况才使用异常
- 异常应该只用于异常的情况下,它们永远不应该用于控制正常的代码执行流程
- 如果类具状态依赖(state-dependent)的方法,即只有在特定的不可预知的条件下才可以被调用的方法,这个类往往也应该有个单独的状态测试(state-testing)方法,即指示是否可以调用这个状态相关的方法。例如,
Iterator
接口有一个状态依赖的next
方法,和相应的状态测试方法hasNext
- 另一种提供单独的状态测试方法的做法是让状态依赖的方法返回空的
Optional
,或者如果它不能执行所需要的计算,那么就可以返回一个可识别的值,比如null
思考
- 我个人倾向于使用返回类似
Optional
的方法,而不是像Iterator
一样抽两个方法。一个是有可能会有线程安全问题(两个方法没有原子性),另一点就是它的使用被分开了,需要查看更多的文档说明才能知道如何使用,而不是直接通过方法名和返回类型而大概知道如何使用