前提
- 利用JBoss restEasy框架搭建的restful java web后台应用
- 希望通过统一的方式对restful接口抛出的异常进行处理封装
步骤
1.定义异常处理类
- 异常处理类需要实现javax.ws.rs.ext.ExceptionMapper接口,代码如下:
| 1 | package xxx.xxx.xxx.common.ext; | 
2.将定义好的异常处理类配置到restEasy
- 作者使用的servlet容器是Jetty并通过web.xml文件进行描述,因此在web.xml中定义异常处理信息,如下图1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16<?xml version="1.0" encoding="UTF-8"?> 
 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
 version="3.1">
 <!--其他配置省略-->
 <!-- 配置统一异常处理handler -->
 <context-param>
 <param-name>resteasy.providers</param-name>
 <param-value>xxx.xxx.xxx.common.ext.RestExceptionHandler</param-value>
 </context-param>
 
 <!--其他配置省略-->
 
 </web-app>
3.rest接口中抛出异常,即可被统一异常处理器处理
| 1 | @GET | 
4.测试接口
测试定义的接口,路径为 /mklo , 可以看到如下结果,说明配置成功1
2
3
4{
    "errorCode": "500",
    "errorMessage": "mklo"
}
