resteasy中统一异常处理

版权声明:转载请注明出处 https://blog.csdn.net/lpy1239064101/article/details/79890184

在使用基于dubbox的微服务中,使用resteas实现rest接口时,常用的spring中统一异常处理已不适用。通过查资料发现使用这种方式可以实现。

1、定义一个统一异常处理类

package com.sf.xxx.user.exception;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;
import com.xxx.framework.domain.Result;
/**
 * @author 833902
 * 2018年2月9日 下午4:25:23
 */
@Provider
public class CustomException implements ExceptionMapper<WebApplicationException>{
  @Override
  public Response toResponse(WebApplicationException exception) {
    Result<Object> result = new Result<>();
    result.setSuccess(false);
    result.setErrorMessage(exception.getMessage());
    return Response.ok().entity(result).build();
  }
}

2、在定义访问的xml中,添加extension

<dubbo:protocol name="rest"
                   port="8888"
                   threads="500"
                   contextpath="services"
                   server="tomcat"
                   accepts="500"
                   extension="com.alibaba.dubbo.rpc.protocol.rest.support.LoggingFilter,com.xxx.xxxx.user.exception.CustomException"/>

3、在业务代码需要进行统一处理的地方进行throw

    throw new WebApplicationException("运行时异常");


参考资料:



展开阅读全文

没有更多推荐了,返回首页