J2EE异常处理写法总结

来源:互联网 发布:中文域名在线转码程序 编辑:程序博客网 时间:2024/06/07 18:07

底层封装上抛,顶层捕获处理,自己定义异常,定位问题迅速


1.dao层写法:

public static Member memberLogin(String loginname, String password) throws MemberException {    String sql = "select * from t_XXX where f_login_name = ? and f_password = ?";db().beginTransaction();Member member = null;try {member = db().getObject(sql, new Object[] { loginname, password }, Member.class);} catch (DbAccessException e) {e.printStackTrace();throw new MemberException("D001","很抱歉,登录验证出现了问题,请稍后重试",e);} finally {db().endTransaction();}return member;}

2.MemberServiceDBImpl:

public Member memberLogin(String loginname, String password) throws MemberException {try {return MemberUtil.memberLogin(loginname,password);} catch (MemberException e) {throw e;}}

3.MemberServiceAgent

public Member memberLogin(String loginname,String password) throws MemberException{return impl.memberLogin(loginname,password);}

4.MemberDataService

public static PageResultData memberLogin(String loginname,String password) throws MemberException{PageResultData result = new PageResultData();JSONObject data = new JSONObject();Member member = null;try{...try{member = MemberServiceAgent.instance().memberLogin(loginname, password);}catch(MemberException e){throw e;}}catch(Exception e){e.getStackTrace();throw new MemberException("S001","很抱歉,登录验证出现了问题,请稍后重试",e);}return result;}

5.LoginPageAction
@RequestMapping(value = "/login.htm", method = RequestMethod.POST)public ModelAndView doLogin(Model model, HttpServletRequest request, String memberName, String password,RedirectAttributes redirect) throws Exception{try {try {...} catch (CmsException | UnitException |MemberException e) {throw e;}} catch (Exception e) {e.printStackTrace();throw new MemberException("C001","很抱歉,登录验证出现了问题,请稍后重试",e);}}


6.自定义异常

public class MemberException extends Exception {    private static final long serialVersionUID = 1;    private String errorCode;    private String errorMessage;        public MemberException(){}    public MemberException(String errorCode, String errorMessage,Exception e) {    super(errorMessage, e);    this.errorCode = errorCode;        this.errorMessage = errorMessage;    }public String getErrorCode() {return errorCode;}public void setErrorCode(String errorCode) {this.errorCode = errorCode;}public String getErrorMessage() {return errorMessage;}public void setErrorMessage(String errorMessage) {this.errorMessage = errorMessage;}}



7.异常处理类

public class MyExceptionHandler implements HandlerExceptionResolver {      public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {          Map<String, Object> model = new HashMap<String, Object>();          model.put("ex", ex);          // 根据不同错误转向不同页面          if(ex instanceof BusinessException) {          BusinessException b=(BusinessException) ex;        model.put("message", b.getErrorMessage());            return new ModelAndView("error-business", model);          }else if(ex instanceof MemberException) {          MemberException b=(MemberException) ex;            model.put("message", b.getErrorMessage()+",错误代码:"+b.getErrorCode());                return new ModelAndView("error-business", model);          }else if(ex instanceof ParameterException) {             return new ModelAndView("error-parameter", model);          } else {                  return new ModelAndView("error", model);          }      }  }  

Xml配置:

<bean id="exceptionHandler" class="com.mixky.cstam.action.test.MyExceptionHandler"/> 




0 0
原创粉丝点击