最近在使用Java实现一个DBMS。一个小组三个人,有一个家伙很能写代码。但是他写的代码真的让人非常困惑。我拿到代码一看,几乎每一个函数都要throws Exception。这真的让人不知所措。他的理由是为了调试方便,我觉得简直难以理解,还说以后会改成具体的Exception,这也很可笑,现在他写了七八千行了,早就懒得回去把每个Exception改成具体类型了。抛出的是Exception,是所有异常的基类型,这让人怎么处理呢?
现在项目收尾了,他停止写代码了,我打算把他留下的烂摊子整理一下,发现这个问题还真的是很难办。我发现,我也不知道应该怎么使用Exception。我仅仅知道,他的写法不对。
看了《高质量Java程序设计》第一章就是讲异常。虽然有了些初步的概念,但是还是很模糊,很迷惑,到底该怎么处置?
书中给出了几条建议:
1、慎用Exception,用代码的反汇编结果说明了,如果加入了异常处理,生成的代码运行时间几乎翻倍。
2、根据时间频度决定是否使用异常。
3、用不需查异常强化方法约定。
4、用Error表示系统级异常。
但是在具体应用时候,我还有不明白的。一级一级throws Exception的原因何在?如何判断应该在哪一层将异常给捕获了?
一级一级地向外throws,但是不捕获,会不会损坏效率?
我们的程序里面用到IO操作,会扔出来IOException。怎么决定在哪一层处理它呢?