springboot下rest接口抛异常的定制处理

本文介绍了如何在JAX-RS框架中使用自定义的ExceptionMapper类MyExceptionHandler,捕获并转换接口抛出的MyException异常,将其转化为Response以JSON格式返回给前端。关键步骤包括实现Provider接口和在配置文件中注册bean。
摘要由CSDN通过智能技术生成

这里简单记录一下。

  • JAX-RS框架下的全局异常处理
    主要是定制ExceptionMapper,作为jaxrs框架的provider,即可将rest接口实现里抛的异常截住,并转化为Response发送给前台。
    一个样例是:
@Provider
public class MyExceptionHandler implements ExceptionMapper<MyException> {

    @Override
    public Response toResponse(MyException exception) {
        MyResponse<Object> resp = new MyResponse<>();
        resp.setCode(1);
        // 根据异常错误码做国际化
        String msg = I18N.getMessage(exception.getCode(), exception.getParams());
        resp.setMessage(msg);
        return Response.ok(resp).type(MediaType.APPLICATION_JSON_TYPE).build();
    }
}

然后将provider bean配置到jaxrs的配置文件里:

<jaxrs:providers>
    <ref bean="myExceptionHandler "/>
</jaxrs:providers>
  • SpringMVC框架下的全局异常处理
    使用@RestControllerAdvice+@ExceptionHandler注解,@ExceptionHandler描述要处理的异常类型,可以是多个异常类型:
@RestControllerAdvice
public class GlobalExceptionHandler {

    /**
     * 默认的异常处理
     */
    @ExceptionHandler(value = Exception.class)
    public ResponseEntity<?> handleDefaultException(Exception ex) {
        // 默认异常处理器DefaultExceptionHandler可定义为一个spring bean
        BaseExceptionHandler<Exception> handler = findService(DefaultExceptionHandler.class);
        return handler.handle(ex);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值