Exception分为:Error和Exception(checkedException、uncheckedException)。在使用异常的时候可以先列出以下问题
Exception
|
Source
|
Scope
|
自定义异常名称
|
会产生自定义异常的方法或事件
|
调用Source的方法或对象
|
我认为uncheckedException比checkedException要好,因为这样可以减少代码中try/catch语句,利用异常处理框架(或filter)来统一处理产生的异常。那uncheckedException与checkedException该如何划分呢?checkedException用来处理可以预知的情况,例如已有针对返回值的不同情况,用If/else判断。此时可以用checkedException提醒调用者对不同的情况做处理,要比调用者自己查源代码然后做出相应的判断要好。uncheckedException用于抛出的异常,一般情况下是不可预知的,会导致系统错误的。例如一个自定义的方法用来格式化日期,它需要一个日期型的字符串,可是偏偏系统传了一个空的字段串,这种事很少发生的,所以不能抛出一个checkedException,不然会造成到处都是try/catch语句。此时uncheckedException就可以用了,在方法上加上@throws uncheckedException,调用者在不能确定自己传入的参数是否合法时,看到方法throw异常,就需要try/catch一下了。(@throws用来说明的是uncheckedException)
在项目开发过程中,用XDoclet+Exception来约束调用者,效果会更好一些。