您的位置:首页 > 其它

J2EE异常处理写法总结

2017-02-07 15:59 309 查看
底层封装上抛,顶层捕获处理,自己定义异常,定位问题迅速

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"/>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: