SpringMVC 全局异常处理,返回json

原创
2018/10/16 17:50
阅读数 376

1.在spring-mvc.xml中增加配置:

比如我的freemarker视图定义的是:/WEB-INF/template

我的页面则放在template下的common目录下,所以下方定义的是common/500,文件扩展名根据视图定义可以忽略

<mvc:annotation-driven />
	
	<!--全局异常输出 -->
    <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
        <property name="exceptionMappings">
            <props>
                <prop key="java.lang.Exception">common/500</prop>
            </props>
        </property>
        <property name="statusCodes">
            <props>
                <prop key="common/500">500</prop>
            </props>
        </property>
        <!-- 设置日志输出级别,不定义则默认不输出警告等错误日志信息 -->
        <property name="warnLogCategory" value="WARN"></property>
        <!-- 默认错误页面,当找不到上面mappings中指定的异常对应视图时,使用本默认配置 -->
        <property name="defaultErrorView" value="common/500"></property>
        <!-- 默认HTTP状态码 -->
        <property name="defaultStatusCode" value="500"></property>
    </bean>

2.配置界面返回

根据自己的页面视图,在对应目录下增加文件,这里我采用的是freemarker,返回标准的json串

"code": 500,
"msg": "系统异常,请联系管理员",
"data": {
	<#assign errs=Request["exception"].getStackTrace()![]>
	<#list errs as err>
		<#assign className=Request["exception"].getStackTrace()[err_index].getClassName()!"">
		<#if className?contains("Controller") || className?contains("Service")>
			"Exception Type":"${Request["exception"].getClass()}",
			"Class Path":"${Request["exception"].getStackTrace()[err_index].getClassName()!""}",
			"Class Name":"${Request["exception"].getStackTrace()[err_index].getFileName()!""}",
			"Error Line":"${Request["exception"].getStackTrace()[err_index].getLineNumber()!""}",
			"Method Name":"${Request["exception"].getStackTrace()[err_index].getMethodName()!""}",
			"-----------------------------------------------------------------------",
			<br/>
		</#if>
	</#list>
 }
}
	

3.效果图

{
    "code": 500,
    "msg": "系统异常,请联系管理员",
    "data": {
        "Exception Type": "class java.lang.NullPointerException",
        "Class Path": "com.aliyun.web.user.UserController",
        "Class Name": "UserController.java",
        "Error Line": "57",
        "Method Name": "queryList",
        "-----------------------------------------------------------------------",
    }
}

 

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部