15 全局异常处理与Retry重试

全局异常介绍

       使用Web应用时,在请求处理过程中发生错误是非常常见的情况。SpringBoot提供一个默认映射:/error,当处理中抛出异常后,会转到请求中处理,并且该请求有一个全局的错误页面来展示异常内容。但实际使用中错误页面对用户并不友好,我们需要自己实现异常提示。

 全局异常使用

       1.制作一个错误页面,也可以网上参考精美页面的源码

2.创建ErrorPageConfig配置类,在springboot1x使用EmbeddedWebServerFactoryCustomizer进行自定义定制配置组件,但是springboot2x 版本 废弃了该类,使用WebServerFactoryCustomizer。注意 配置类的配置相关注解使用

/**
 * @program: demo
 * @description: 自定义错误页面
 * @author: wllmp520
 * @create: 2019-06-20 18:17
 */
@Configuration
public class ErrorPageConfig {
    @Bean
    public WebServerFactoryCustomizer<ConfigurableWebServerFactory> webServerFactoryCustomizer(){
        //lamb da表达式
        return (container -> {
            ErrorPage error401Page = new ErrorPage(HttpStatus.UNAUTHORIZED, "/401.html");
            ErrorPage error404Page = new ErrorPage(HttpStatus.NOT_FOUND, "/404.html");
            ErrorPage error500Page = new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, "/500.html");
            container.addErrorPages(error401Page, error404Page, error500Page);
        });
    }
}

3.启动服务 测试,输入一个不存在的项目链接,出现404.html

全局异常类开发

1.自定义异常信息类

@Data
public class ErrorInfo<T> {
    public static final Integer SUCCESS=200;
    public static final Integer ERROR=100;
    //错误码
    private  Integer code;
    //错误信息
    private  String meassage;
    private  String url;
    private  T data;
}

2.创建统一异常处理类,@ControllerAdvice定义统一的异常处理类,扫描包中类进行异常处理

@ControllerAdvice(basePackages = {"com.example.demo",})
public class GlobalDefalutExceptionHanlder {
    @ExceptionHandler({BusinessException.class})
    @ResponseBody
        public ErrorInfo defaultErrorHandler(HttpServletRequest request, Exception e) throws Exception{
        ErrorInfo errorInfo=new ErrorInfo();
        errorInfo.setMeassage(e.getMessage());
        errorInfo.setUrl(request.getRequestURI());
        errorInfo.setCode(errorInfo.SUCCESS);
        return  errorInfo;
    }
}

3.测试

 @RequestMapping("/findAll")
    public String findAll(Model model){
        List<AyUser> userList=ayUserService.findAll();
        model.addAttribute("userList",userList);
        throw new BusinessException("业务异常????");
    }

结果:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值