一、前言
后台出现异常如何友好而又高效地回显到前端呢?直接将一堆的错误信息抛给用户界面,显然不合适。
先不考虑代码实现,我们希望是这样的:
(1)如果是页面跳转的请求,出现异常了,我们希望跳转到一个异常显示页面,如下:
当然,这里的界面不够美观,但是理论是这样的。
(2)如果是ajax请求,那么我们,希望后台将合理的错误显示返回到ajax的回调函数里面,如下:
$.ajax({
type: "post",
url: "<%=request.getContextPath()%>" + "/businessException.json",
data: {},
dataType: "json",
contentType : "application/json",
success: function(data) {
if(data.success == false){
alert(data.errorMsg);
}else{
alert("请求成功无异常");
}
},
error: function(data) {
alert("调用失败....");
}
});
将回调函数的data.errorMsg打印出来:
下面,我们根据上面的思路我们来看看代码的实现。因此本文实例包含了异常自定义分装,为了无障碍阅读下文,请猿友移步先看完博主的另外一篇文章:Java异常封装(自己定义错误码和描述,附源码)。
二、实例详解
本实例使用的环境 eclipse+maven,其中maven只是为了方便引入jar包。
使用的技术:springmvc
在Spring MVC中,所有用于处理在请求映射和请求处理过程中抛出的异常的类,都要实现HandlerExceptionResolver接口。HandlerExceptionResolver接口有一个方法resolveException,当controller层出现异常之后就会进入到这个方法resolveException。
下面我们直接实现HandlerExceptionResolver接口,代码如下:
package com.luo.exceptionresolver;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import javax.servlet