SpringMVC 全局异常处理,返回json

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",
        "-----------------------------------------------------------------------",
    }
}

 

转载于:https://my.oschina.net/gmupload/blog/2247133

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值