java入门013~java异常的捕获~springboot通过@ControllerAdvice和@ExceptionHandler来捕获异常

还记得我们前面在讲单个文件上传时,如果文件过大,会抛出一个异常吗,还的记得我们抛出异常时,没有给用户任何反馈,而是跳到了一个错误页面吗,其实这样用户体验很不好。今天我们就来通过全局异常的捕获,在用户上传文件过大时,给用户一个友好提示

本节知识点

  1. 认识java异常
  2. java异常的捕获
  3. springboot捕获全局异常
  4. 通过@ControllerAdvice和@ExceptionHandler来捕获异常

学习本节知识点之前,先来看看我们前面章节讲到的单个文件上传。

java文件上传~springboot实现单个文件上传

我们上传的文件过大时,会跳到下面这样的一个错误页面。也就是报了一个500错误。

java入门013~java异常的捕获~springboot通过@ControllerAdvice和@ExceptionHandler来捕获异常_第1张图片

 

 

 

再看下我们后台日志。可以看到我们是抛出了一个文件过大的异常。

java入门013~java异常的捕获~springboot通过@ControllerAdvice和@ExceptionHandler来捕获异常_第2张图片

 

 

 

我们结下来要做的就是,在用户上传文件过大时,我们捕获到这个异常,然后给用户一个友好的提示。

一,通过@ControllerAdvice和@ExceptionHandler来捕获异常

1,首先定义一个MyExceptionHandler类,如下图

java入门013~java异常的捕获~springboot通过@ControllerAdvice和@ExceptionHandler来捕获异常_第3张图片

 

 

 

简单讲下这个类

@ResponseBody:用来返回错误信息到网页
@ResponseStatus:默认捕获500错误
@ExceptionHandler(Exception.class):定义捕获所有的Exception异常

然后我们的文件过大抛出的是MaxUploadSizeExceededException 这个异常。所以我们在捕获到MaxUploadSizeExceededException这个异常时,返回一段话“文件过大”

 

这样当上传文件过大时,就会返回给用户如下一段话

java入门013~java异常的捕获~springboot通过@ControllerAdvice和@ExceptionHandler来捕获异常_第4张图片

 

 

 

二,捕获其他异常

如我们这里定义一个如下异常

java入门013~java异常的捕获~springboot通过@ControllerAdvice和@ExceptionHandler来捕获异常_第5张图片

 

 

 

大家知道java里,0不能被除的,0如果被除,就会爆出如下错误。

java入门013~java异常的捕获~springboot通过@ControllerAdvice和@ExceptionHandler来捕获异常_第6张图片

 

 

 

 

java入门013~java异常的捕获~springboot通过@ControllerAdvice和@ExceptionHandler来捕获异常_第7张图片

 

 

 

我们这个时候,也是通过定义一个全局的捕获异常。

@ControllerAdvice//controller增强器,用来捕获controller里的异常
public class MyExceptionHandler {
    @ResponseBody
    @ResponseStatus
    @ExceptionHandler(Exception.class)
    public String handlerMethodArgumentException(Exception e) {
        System.out.println(e.getClass().getName());
        if (e instanceof MaxUploadSizeExceededException) {
            return "文件过大";
        }
        return "错误信息:" + e.getMessage();
    }
}

 

这样,再访问我们定义的  5/0的  “/errorTest”接口时,就会捕获到这个异常了

java入门013~java异常的捕获~springboot通过@ControllerAdvice和@ExceptionHandler来捕获异常_第8张图片

 

到这里我们springboot借助@ControllerAdvice和@ExceptionHandler来捕获异常就轻松实现了 @ControllerAdvice还有很多别的用处,我们后面会做讲解。

视频讲解地址:https://edu.csdn.net/course/detail/23443

系列讲解

  • java入门001--IntelliJ IDEA 配置阿里云Maven国内仓库(含idea下载及破解教程)
  • java入门002~jdk8 window版32位 64位 Mac版64位安装包
  • java入门003~手把手教你开发自己的第一个java项目(基于springboot2.1.5)
  • java入门004~五分钟教你用java开发一个小程序后台服务器~看完你也会
  • java入门005~springboot实现单个文件上传(图片 文档 视频 音频都可以上传)
  • java入门006~springboot实现多文件的上传(java多文件的上传)

你可能感兴趣的:(java入门系列,java)