论坛首页 Java企业应用论坛

java web项目整体异常处理机制

浏览 24548 次
精华帖 (0) :: 良好帖 (9) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-06-10  
基本和我使用的一致,另外DAO层是否使用关键还是要看分层情况
0 请登录后投票
   发表时间:2011-06-10  
我现在也是这么处理,包含如果是ajax的处理。我用的是spring mvc

//~ Methods ========================================================================================================
	@ExceptionHandler()
	public @ResponseBody String handle(Exception exception, HttpServletRequest request, HttpServletResponse response) {
		logger.error(request.getRequestURI() + " 请求失败", exception);
		
		ResponseData data = new ResponseData(false, exception.getClass() + ": " + exception.getMessage());
		data.setRequestURI(request.getRequestURI());
		
		StackTraceElement[] trace = exception.getStackTrace();
		StringBuilder traceContent = new StringBuilder();
        for (int i=0; i < trace.length; i++)
        	traceContent.append("\tat " + trace[i]);
		data.setExecptionTrace(traceContent.toString());
		
		String json = "";
		try {
			json = mapper.writeValueAsString(data);
		} catch (Exception e1) {
			e1.printStackTrace();
		}
		
		if(!(request.getRequestURI().endsWith(".json") || request.getRequestURI().endsWith("Json")))
			throw new RuntimeException(exception);
		
		response.setStatus(500);//服务端处理失败
		response.setContentType("application/json;charset=UTF-8");
		return json;
	}


如果是ajax请求,提示处理:
//Ajax请求完成执行。判断Session超时,如果超时或者无效,返回的内容为login.jsp页面的内容,页面包含:AJAX-AccessDeniedException
//如果页面包含AJAX-AccessDeniedException,说明session超时或者无效。
Ext.Ajax.on('requestcomplete', function(conn, response, options){
	if(options.params['REQUEST_MODE'] == "AJAX" &&
		response.responseText.indexOf("AJAX-AccessDeniedException") != -1) {
		Ext.Msg.alert('提示', '会话超时,请重新登录!', function(){
            window.location = './login'; 
        });
	}
});

Ext.Ajax.on('requestexception', function(conn, response, options){
	//ajax请求,出现异常,弹出窗口提示信息。
	//var json = response.responseText.replace("</generated></generated>", "");
	var json = response.responseText;
	var data = Ext.decode(json);

	Ext.Msg.alert('提示', "请求URI:"+ data.requestURI + "<br>错误信息:"+ 
		data.message + "<br><a href='#'>错误堆栈信息</a>", function(){
    });
	return false;
});
0 请登录后投票
   发表时间:2011-06-10  
楼主说说简单的jsp+javabean架构如何处理异常??
12 请登录后投票
   发表时间:2011-06-11  
首先感谢楼主的分享,这个问题我曾经也思考了一下,但是始终没有找到觉得完美的方法!
0 请登录后投票
   发表时间:2011-06-11  
楼主可否发个简单示例,我们进行扩充与自定义。
0 请登录后投票
   发表时间:2011-06-11  
pml346680914 写道
楼主说说简单的jsp+javabean架构如何处理异常??


可以用Servlet的filter吧~封装一个拦截器
0 请登录后投票
   发表时间:2011-06-11  
itlangqun 写道
楼主可否发个简单示例,我们进行扩充与自定义。


我的这篇文章有源码:
http://www.iteye.com/topic/1069749
0 请登录后投票
   发表时间:2011-06-13  
一般都是service记录异常网上抛,struts来跳转 不错 回头整理
0 请登录后投票
   发表时间:2011-06-13  
学到了不少东西啊
0 请登录后投票
   发表时间:2012-05-29  
正是我需要的资料
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics