Java Exception机制有两种模型,中止模型继续模型。实际上使用中止模型比较多,而继续模型不是很普遍,多少是耦合的过于紧密。
中止模型:假设错误非常严重,以至你无法回到错误发生的地方,也就是说,这段程序经过判断认为已经没有办法挽回,于是就抛出异常,希望这个异常不要再回来,这也是java当前采用的模式。
继续模型:这种模型的主旨是恢复当前的运行环境,然后希望能够重新回到错误的发生地,并希望第二次的尝试能够获得成功,这种模型通常为操作系统所应用。
Java Exception优点:让异常处理与业务逻辑的主线分离,我们可以对可遇见的异常做分支处理,其实将业务逻辑与异常处理分离也是Exception设计的主旨,其次Java Exception不需要像C语言那样在程序的多个地方去检测同一个错误,并就地做异常处理,相比于老式的错误处理,现在的错误处理结构更加清晰。
Java Exception缺点:(1)当一个方法中被过多的抛出受控异常,那么在别人调用的时候会造成try/catch语句的泛滥,甚至经常出现嵌套异常,使得代码的可读性下降。(2)在某些方面检测系统的异常也并没有实际意义,因为当出现这种异常的时候一般代表问题很严重我们无法恢复。(3)在大型系统中受控异常同时会造成异常处理类的泛滥。
——摘自http://baike.baidu.com/view/998511.htm
中止模型:假设错误非常严重,以至你无法回到错误发生的地方,也就是说,这段程序经过判断认为已经没有办法挽回,于是就抛出异常,希望这个异常不要再回来,这也是java当前采用的模式。
继续模型:这种模型的主旨是恢复当前的运行环境,然后希望能够重新回到错误的发生地,并希望第二次的尝试能够获得成功,这种模型通常为操作系统所应用。
Java Exception优点:让异常处理与业务逻辑的主线分离,我们可以对可遇见的异常做分支处理,其实将业务逻辑与异常处理分离也是Exception设计的主旨,其次Java Exception不需要像C语言那样在程序的多个地方去检测同一个错误,并就地做异常处理,相比于老式的错误处理,现在的错误处理结构更加清晰。
Java Exception缺点:(1)当一个方法中被过多的抛出受控异常,那么在别人调用的时候会造成try/catch语句的泛滥,甚至经常出现嵌套异常,使得代码的可读性下降。(2)在某些方面检测系统的异常也并没有实际意义,因为当出现这种异常的时候一般代表问题很严重我们无法恢复。(3)在大型系统中受控异常同时会造成异常处理类的泛滥。
——摘自http://baike.baidu.com/view/998511.htm