项目中经常会遇到try…catch…finally。很是烦,而且并没有一个整体的设计原则去实践。尤其是当遇到自己需要设计异常的时候。
参考
Jersey实现统一异常
讨论内容很多
自定义异常
一、自定义异常父类的选择
- 系统异常:软件的缺陷,客户端对此类异常是无能为力的,通常是Unchecked Exception。
- 业务异常:用户未按正常流程操作导致的异常,通常是Checked Exception
A、自定义异常的父类,可以选择为RuntimeException或Exception。RuntimeException是运行时异常,你可以选择它来做为你的异常父类,因为这种异常不受到编译器检查,因此,给予了程序员很大的灵活性,程序员可以处理这种异常,也可以不处理(实际上并不是不处理,而是不立即处理,等到一个合适的地方再进行处理)。选择RuntimeException作为父类,是很多框架常采用的,如果你是做底层框架的,可以选择 RuntimeException。
B、业务层异常,一般选择Exception作为父类,因为业务层异常比较重要,一般都是要由调用者进行处理或者是要告知调用者会发生这种异常。如果你的代