模式16:Colocate Exception

异常类放置的位置应该靠近抛出该异常的接口或者类。 对于异常的处理,往往都是在系统开发的后期才做的,或者说对于某个功能来说,认真考虑该功能可能抛出的异常及其处理,一般都是在该功能实现的后期才做的。这个时候就会涉及到异常类摆放在哪的问题。异常类的摆放会影响系统的模块化程度,更具体来说,会影响系统模块间的依赖结构。比如错误的将异常放置在捕获异常的模块里,就容易造成循环依赖:捕获异常的模块依赖抛出异常的模块;而抛出异常的模块因为异常类定义在捕获异常的模块里,所以它又不得不依赖于后者,造成循环依赖。