Java EE 项目中异常处理(6)

  同样JDBC访问都会抛出SQLException的checked异常。

  为了避免系统级的checked异常对业务系统的深度侵入,我们可以为业务方法定义一个业务系统自己的异常。针对像SQLException,RemoteException这些非常严重的异常,我们可以新定义一个unChecked的异常,然后把SQLException,RemoteException封装成unChecked异常后抛出。

  如果这个系统级的异常是要交由上一级调用者处理的,可以新定义一个checked的业务异常,然后把系统级的异常封存装成业务级的异常后再抛出。

  一般地,我们需要定义一个unChecked异常,让集成层接口的所有方法都声明抛出这unChecked异常。

  Java 代码

  public DataAccessException extends RuntimeException{

  ……

  }

  public interface UserDao{

  public String getPassword(String userId)throws DataAccessException;

  }

  public class UserDaoImpl implements UserDAO{

  public String getPassword(String userId)throws DataAccessException{

  String sql = “select password from userInfo where userId= ‘”+userId+”’”;

  try{

  …

  //JDBC调用

  s.executeQuery(sql);

  …

  }catch(SQLException ex){

  throw new DataAccessException(“数据库查询失败”+sql,ex);

  }

  }

  }

  定义一个checked的业务异常,让业务层的接口的所有方法都声明抛出Checked异常.java 代码

  public class BusinessException extends Exception{

  …..

  }

  public interface UserManager{

  public Userinfo copyUserInfo(Userinfo user)throws BusinessException{

  Userinfo newUser = null;

  try{

  newUser = (Userinfo)user.clone();

  }catch(CloneNotSupportedException ex){

  throw new BusinessException(“不支持clone方法:”+Userinfo.class.getName(),ex);

  }

  }

  }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwpjzj.html