一般情况下,企业级应用都对应着复杂的业务逻辑,为了保证系统的健壮,必然需要面对各种系统业务异常和运行时异常。
不好的异常处理方式容易造成应用程序逻辑混乱,脆弱而难于管理。应用程序中充斥着零散的异常处理代码,使程序代码晦涩难懂、可读性差,并且难于维护。
检查 (Checked) 异常与非检查 (Unchecked) 异常
如图 3 所示,为一个常见的一般性异常处理代码结构。其中,try 语句块代表要运行的代码并受异常监控,其中代码发生异常时,会创建一个异常对象并抛出。
finally 语句块是紧跟 catch 语句后的语句块,该语句块总会在方法返回前执行,无论 try 语句块是否发生异常。
如图 5 所示类图显示了一个具体的异常处理框架:
图 5. 异常处理框架类图样例
该框架主要包括三部分:异常 Service、异常处理过滤器、系统异常层次定义。
异常层次定义:异常层次定义应用系统的异常基础结构,是异常处理过滤器所处理的目标异常类型集合。
对于多层系统,每一层都有该层的基本异常。在层与层之间的信息传递与方法调用时候,一旦在某层发生异常,传递到上一层的时候,一般包装成该层异常,直至与用户最接近的 UI 层,从而转化成用户友好的错误信息。
异常转译就是将一种异常转换为另一种异常。异常转译针对所有继承 Throwable 超类的异常类而言的。如下图 7 中代码所示展示了异常转译的一个例子:
联系客服