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

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

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

  下面给出抛出checked异常的一个例子:

public void updateUser(UserDTO userDTO)
throws BaseAppException{
 UserDAO userDAO = new UserDAO();
 UserDAO.updateUser(userDTO);
 ...
 if(...)
 throw new RegionNotActiveException("Selected region is not active");
}
Controller Method:
...
try{
 User user = new User();
 user.updateUser(userDTO);
}catch(BaseAppException ex){
 //ExceptionHandler is used to handle
 //all exceptions derived from BaseAppException
}
...

  迄今为止,我们已经说明,对于所有可能抛出checked异常并被Controller调用的方法,其throws子句中应该只包含checked异常。然而,这实际上暗示着我们在throws子句中不能包含其他任何应用程序异常。但是,如果需要基于catch块中某种类型的异常来执行业务逻辑,那又该怎么办呢?要处理这类情况,方法还可以抛出一个特定异常。记住,这是一种特例,开发人员绝对不能认为这是理所当然的。同样,此处讨论的应用程序异常应该扩展BaseAppException类。下面给出一个例子:

CustomerDAO method:
//throws CustomerNotActiveException along with
//BaseAppException
public CustomerDTO getCustomer(InputDTO inputDTO)
throws BaseAppException,
CustomerNotActiveException {
 . . .
 //Make a DB call to fetch the customer
 //details based on inputDTO
 . . .
 // if not details found
 throw new CustomerNotActiveException("Customer is not active");
}
Client method:
//catch CustomerNotActiveException
//and continues its processing
public CustomerDTO getCustomerDetails(UserDTO userDTO)
throws BaseAppException{
 ...
 CustomerDTO custDTO = null;
 try{
  //Get customer details
  //from local database
  customerDAO.getCustomerFromLocalDB();
 }catch(CustomerNotActiveException){
  ...
  return customerDAO .activateCustomerDetails();
 }
}
  在web应用程序层次上处理unchecked异常

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

正在加载评论...