浏览 283 次
|
该帖已经被评为新手帖
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2008-07-07
最近做项目时有一个想法,就是当系统内部异常时,让系统自己捕获异常,然后将异常信息分类,将异常提示友好的展现给用户,比如说当网络中断,提示用户网络中断,数据库连接不上时提示数据库连接异常等,因为我不想在每个业务处理单元写那么多 try catch,所以我想写一个错误处理方法,统一对异常进行处理,暂时还没有想到怎么去下手,还请各位同仁指点,或者哪位以前做过类似的事情,还希望能共享一下,不胜感激!
声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-07-07
定义一个业务异常,继承RuntimeException。
action中,发现这个异常,定向到一个异常界面就可以了。 页面界面想怎么展示就怎么展示。 |
|
| 返回顶楼 | |
|
最后更新时间:2008-07-07
能不能说的详细点,最好写点示例代码!
|
|
| 返回顶楼 | |
|
最后更新时间:2008-07-07
BaseAction.java
* 处理执行Action时发生的不同异常
*
* @param ex
* @param request
* @return
*/
public ActionForward processException(Exception ex,HttpServletRequest request){
ActionMessages messages=new ActionMessages();
if(ex instanceof org.springframework.dao.DataAccessException ){
logger.debug("数据库访问异常。",ex);
messages.add(ActionMessages.GLOBAL_MESSAGE,new ActionMessage("errors.data_access"));
this.saveErrors(request,messages);
return new ActionForward("ErrorForward","/common_page/inner_error.jsp",false,"/");
}else if(ex instanceof com.huanghj.action.ApplicationException){
ApplicationException e=(ApplicationException)ex;
ActionMessage message =null;
if(e.getI18NMessageArgs()!=null && e.getI18NMessageArgs().length>0){
message = new ActionMessage(e.getI18NMessageCode(),e.getI18NMessageArgs());
}else{
message = new ActionMessage(e.getI18NMessageCode());
}
messages.add(ActionMessages.GLOBAL_MESSAGE,message);
this.saveErrors(request,messages);
return new ActionForward("ErrorForward","/common_page/failure.jsp",false,"/");
}else if(ex instanceof IllegalArgumentException ||
ex instanceof NumberFormatException ){
logger.debug("数据转换异常",ex);
messages.add(ActionMessages.GLOBAL_MESSAGE,new ActionMessage("errors.paramFormat"));
this.saveErrors(request,messages);
return new ActionForward("ErrorForward","/common_page/failure.jsp",false,"/");
}else if(ex instanceof InvocationTargetException){
if(logger.isDebugEnabled())
logger.debug("业务方法中抛出异常",ex);
ApplicationException e=(ApplicationException)((InvocationTargetException)ex).getTargetException();
ActionMessage message =null;
if(e.getI18NMessageArgs()!=null && e.getI18NMessageArgs().length>0){
message = new ActionMessage(e.getI18NMessageCode(),e.getI18NMessageArgs());
}else{
message = new ActionMessage(e.getI18NMessageCode());
}
messages.add(ActionMessages.GLOBAL_MESSAGE,message);
this.saveErrors(request,messages);
return new ActionForward("ErrorForward","/common_page/failure.jsp",false,"/");
}else {
logger.debug("未期待的异常。",ex);
messages.add(ActionMessages.GLOBAL_MESSAGE,new ActionMessage("errors.unknown"));
this.saveErrors(request,messages);
return new ActionForward("ErrorForward","/common_page/inner_error.jsp",false,"/");
}
}
##--exception--## errors.data_access=数据库访问错误。 errors.unknown=未知错误,请检查网络是否连通。 errors.notlogin=未登陆或超时。 errors.no_much_permission=您没有权限进行此操作。 errors.badparam=您试图通过非法参数访问系统。 errors.paramFormat=提交数据格式错误 errors.loginFailed=您输入的用户名或密码有误 errors.sendMainError=发送邮件失败 errors.submitAgain=错误!重复操作! addUserSendMainError=创建用户成功,发送邮件失败 content.is.empty=页面暂未编辑,内容为空 以前项目的代码尽供参考! |
|
| 返回顶楼 | |
|
最后更新时间:2008-07-07
Jerry . \ 能不能把这个给贴出来啊 com.huanghj.action.ApplicationException 谢谢
|
|
| 返回顶楼 | |
|
最后更新时间:2008-07-09
ApplicationException 继承自RuntimeException
并重写父类的构造方法 给你贴一个吧
public class ApplicationException extends RuntimeException {
/**
*
*/
private static final long serialVersionUID = 1L;
public ApplicationException() {
// TODO Auto-generated constructor stub
}
public ApplicationException(String message) {
super(message);
// TODO Auto-generated constructor stub
}
public ApplicationException(Throwable cause) {
super(cause);
// TODO Auto-generated constructor stub
}
public ApplicationException(String message, Throwable cause) {
super(message, cause);
// TODO Auto-generated constructor stub
}
}
|
|
| 返回顶楼 | |




