前面已经多次提到过Checked Exception的好处。
在实际工作中,已经证实了这个问题。
当然,问题的由来和结构的设计有一定的关系。
A Module 调用 => B Module 调用=> C Module。
而异常处理已经深深的夹杂着这样的代码结构中。
用户直接使用A,但是会在C处才会出现问题。
这时候C需要抛出一个异常, 但是附加关键要求:
此异常消息明确无误,能够清晰地看出异常出现的原因
(在不重启的情况下,以便用户解决问题)
刚开始的代码中,直接就在C处跑出异常。
后来随着结构的复杂,加入了模块D (其位置和B相同)
甚至在最外层加入D (和A并列)
这就导致C处的异常消息的问题逐渐浮现出来。
原有在C处就能直接决定的Message现在不能在C处就确认(因为有多个进入C的入口)
此时,只能将异常消息的决定权往上一级进行转移。
。。。。。。。。。。。。。
UnChecked Exception对于这样的转移来说 太不能友好的支持了。
在反驳上述内容的时候,请带着这样的观点:
好的东西,可以在很别扭的情况下,也可以让别人轻松的达到和谐。