SpringBoot 错误页面和异常处理

一,错误页面

如图所有,这两种错误提示在springboot开发的应有程序中都很常见,第一种是html请求,第二种是json格式的请求。

在SpringBoot中,默认错误请求控制器是BasicErrorController。

@RequestMapping注解的意思是,如果配置文件没有配置server.error.path,则默认使用error

这里主要看我圈出来的这两个方法,第一个方法是处理html请求的错误,第二种是处理json格式请求的错误。

了解完基础知识之后,就可以开始准备我们专属的错误页面的。

从SpringBoot官方文档里边可以知道,默认的错误页面是在templates下的一个erroe.html文件,如果我们替换掉默认的,只需要再这个目录下新建一个error.html即可。

测试代码:

可以看到,我们新创的error.html已经替换掉springboot默认的错误页面了。除了这种全部错误都用一个页面来展示的方法,我们也可以用错误码来区分错误,让不同的错误跳转到不同的HTML。

测试代码:

其他的错误码页面也是类似,要注意,文件的目录是放在templates/error/xxx.html ,同时,我们也可以看出来,错误页面的响应也是有优先级的,具体的请看总结。

 

接下来,是动态的错误页面。一般页面上都需要把错误信息给打印出来。

注意,这里配置文件要改动一下,不然页面上是获取不到错误信息的。

 

小总结:基本上,springboot错误页面的配置已经讲解完了,各种错误页面的优先级是 : 动态 > 静态 > error.html

 

 

二,统一异常处理

这里主要涉及到2个注解:@ExceptionHandler和@ControllerAdvice

@ExceptionHandler注解,此注解注解到类的方法上,当此注解里定义的异常抛出时,此方法会被执行。

如果@ExceptionHandler所在的类是@Controller,则此方法只作用在此类。

如果@ExceptionHandler所在的类带有@ControllerAdvice注解,则此方法会作用在全局。

 

也就是说,局部的异常处理 =  @Controller/@RestController + @ExceptionHandler,全局的异常处理 = @ControllerAdvice + @ExceptionHandler

局部异常处理  测试代码:

可以看到,两个不同的controller,同样的异常,不同的错误输出。

 

全局异常处理-代码测试:

 

可以看到,两个controller都可以对同一个异常做出同样的处理。

 

 

三,总结

介绍了springboot默认处理错误页面的几种方法和介绍了怎么做一个异常统一处理。在项目里,配置了异常统一处理之后,不管哪里抛出的异常,我们只需在统一处理的方法上修改我们的逻辑即可,减轻我们开发和维护的难度,毕竟方法多了之后异常零散分散在不同的方法里,不好管理。

 

 

 

 

 

 

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值