一个用于J2EE应用程序的异常处理框架

http://tech.ddvip.com   2006年11月21日    社区交流

本文详细介绍一个用于J2EE应用程序的异常处理框架

  记录异常。底层的日志记录机制被隐藏,可以基于一些环境属性对其进行配置。

  您可能已经注意到了,我们在表示层中捕捉的惟一异常就是BaseAppException。由于所有checked异常都是BaseAppException的子类,这意味着我们要捕捉BaseAppException的所有派生类。基于类名称来识别错误代码再容易不过了。

  //exp is an object of BaseAppException
String className = exp.getClass().getName();

  可以基于异常类的名称在一个XML文件(exceptioninfo.xml)中对错误代码进行配置。下面给出异常配置的一个例子:

<exception name="EmployeeConfirmationException">
 <messagecode>messagecode.laborconfirmation</messagecode>
 <confirmationind>true</confirmationind>
 <loggingtype>nologging</loggingtype>
</exception>

  正如您看到的那样,我们把这个异常变为显式,要使用的消息代码是messagecode.employeeconfirmation。然后,为了实现国际化的目的,可以从ResourceBundle提取实际的消息。我们很清楚,不需要对这类异常执行日志记录,因为它只是一条确认消息,而不是一个应用程序错误。

  让我们看一看上下文敏感异常的一个例子:

<exception name="RecordNotFoundException">
 <messagecode>messagecode.recordnotfound</messagecode>
 <confirmationind>false</confirmationind>
 <contextind>true</contextind>
 <loggingtype>error</loggingtype>
</exception>

  在这里,这个表达式的contextind为true。在handleException方法中传递的上下文可用于创建惟一的错误代码。例如,如果我们把order.getOrder当作一个上下文进行传递,结果得到的消息代码就是异常的消息代码和所传递的上下文的串联。因此,我们获得了一个像messagecode.recordnotfound.order.getOrder这样的惟一消息代码。

来源:bea    作者:ShriKant Vashishtha    责编:豆豆技术应用

正在加载评论...