J2EE异常处理写法总结
2017-02-07 15:59
309 查看
底层封装上抛,顶层捕获处理,自己定义异常,定位问题迅速
1.dao层写法:
2.MemberServiceDBImpl:
3.MemberServiceAgent
4.MemberDataService
5.LoginPageAction
6.自定义异常
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配置:
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"/>
相关文章推荐
- 使用jmeter进行APP接口测试经验总结
- elasticsearch安装与使用(4)-- 安装中文分词插件elasticsearch 的 jdbc
- WIN7不能被远程桌面问题
- 算法笔记_019:背包问题(Java)
- ffprobe使用详解
- C++ typedef用法详解(转)
- CentOS 7 最小化安装后的注意事项及一些必备组件的安装
- CentOS 7 最小化安装后的注意事项及一些必备组件的安装
- BP神经网络C++代码
- C++函数的递归调用
- vulkan中vertex buffer的用法
- Centos搭建LAMP(详细过程)
- 特征的选择_02:RFormula
- Android自定义图片选择器
- 实时统一日志采集Flume平台化
- 3分钟实现iOS语言本地化/国际化(图文详解)
- 一个干货任意门
- 【目标检测】基于SVM+HoG目标检测
- shell 批量重命名
- MySQL删除重复记录