统一处理jersey的异常
来源:互联网 发布:单片机与微机的区别 编辑:程序博客网 时间:2024/04/28 11:07
一般我们的api接口最好统一返回一些错误码,使用Json封装错误码和相应的消息,我们可以使用一下的方式来实现异常的统一处理。
第一步:定义一个继承自RuntimeException的异常类,封装错误码和相应的消息。
public class ClientResponseException extends RuntimeException{ private int resultCode = ClientApiConstant.ResultCode.FAILED; private Object data = null; public ClientResponseException(int resultCode,String message,Object data){ super(message); this.resultCode = resultCode; this.data = data; } public ClientResponseException(String message){ super(message); } /** * @return the resultCode */ public int getResultCode(){ return resultCode; } /** * @param returnCode the resultCode to set */ public void setresultCode(int resultCode){ this.resultCode = resultCode; } /** * @return the data */ public Object getData(){ return data; } /** * @param data the data to set */ public void setData(Object data){ this.data = data; } }
第二步:在resources目录下建立ExceptionMapper的实现类,处理上面定义的异常,添加javax.ws.rs.ext.Provider注解,这样jersey就能自动发现该类。
@Providerpublic class ExceptionMapperSupport implements ExceptionMapper<Exception>{ @Override public Response toResponse(Exception exception){ exception.printStackTrace(); if(exception instanceof ClientResponseException){ ClientResponseException xx = (ClientResponseException)exception; JSONObject object = new JSONObject(); object.put(ClientApiConstant.Key.RESULT_CODE, xx.getResultCode()); object.put(ClientApiConstant.Key.MESSAGE, xx.getMessage()); object.put(ClientApiConstant.Key.DATA,xx.getData()); return Response.ok(JSON.toJSONString(object, true), MediaType.APPLICATION_JSON).build(); }else { JSONObject object = new JSONObject(); object.put(ClientApiConstant.Key.RESULT_CODE, ClientApiConstant.ResultCode.FAILED); object.put(ClientApiConstant.Key.MESSAGE,ClientApiConstant.Msg.FAIL); return Response.ok(JSON.toJSONString(object, true), MediaType.APPLICATION_JSON).build(); } }}
第三步:在resource方法中直接抛出上面定义的ClientResponseException 异常
@POST@Path("exception")public String exception(){
//在需要抛出异常的时候 throw new ClientResponseException(1000,"messagge","额外数据");}
返回的结果
{
"Message":"messagge",
"Data":"额外数据",
"ResultCode":1000
}
0 0
- 统一处理jersey的异常
- Jersey 统一异常处理
- Jersey框架的统一异常处理机制
- Jersey框架的统一异常处理
- Jersey Rest 异常统一处理机制
- jersey框架统一处理异常机制
- 统一的处理异常
- 异常的统一处理
- 统一异常的处理
- 统一的异常处理
- springMVC的统一异常处理
- springmvc统一的异常处理
- jersey搭建过程的异常与处理
- REST(Jersey实现)统一异常机制
- resteasy 统一的异常处理handler
- c/c++的异常统一处理
- Spring MVC的异常统一处理方法
- spring中对异常的统一处理
- 一名设计师,要具备的知识管理思维(一)
- Linux (centos7) 防火墙命令
- 如何修改TextView链接点击实现(包含链接生成与点击原理分析)
- Hello World
- Oracle数据库安装完,重启后网络打开超慢解决办法
- 统一处理jersey的异常
- Qt数据库操作,检测表中是否存在某条数据
- Mybatis3+Spring4+SpringMVC4 整合
- yum -y install与yum install有什么不同
- MFC通过ADO操作Access数据库
- [如何编辑PDF]教你怎样编辑修改PDF文件
- Android 以广播的方式监听Home键
- oracle 表空间和用户的创建删除,以及权限
- Android Wear 开发 (一)