springboot如何添加全局异常捕获类

下面是关于在SpringBoot中添加全局异常处理类的详细攻略:

1. 首先新建一个全局异常处理类

在SpringBoot中,我们可以通过编写一个全局异常处理类来处理项目中出现的所有异常。在本文中,我们将这个全局异常处理类命名为 GlobalExceptionHandler。

@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(value = Exception.class)
    @ResponseBody
    public Result errorHandler(Exception e) throws Exception {
        e.printStackTrace();
        return Result.fail(e.getMessage());
    }
}

上述代码中,我们通过@ControllerAdvice注解来标识这是一个全局异常处理类,在类上使用该注解后,这个类中的所有方法都将作为全局异常处理方法。

在方法上,我们通过@ExceptionHandler来指定需要处理的异常类型。在示例中,我们处理的是所有类型的异常,即Exception.class。同时,我们使用@ResponseBody注解来将返回的结果转换为JSON格式返回给前端。

2. 在SpringBoot配置文件中配置

在SpringBoot中,我们需要在配置文件中配置一些参数来启用全局异常处理类。打开src/main/resources/application.yml文件,并添加以下配置:

spring:
  mvc:
    throw-exception-if-no-handler-found: true
    static-path-pattern: /static/**
  resources:
    add-mappings: false

在上述配置中,我们启用了throw-exception-if-no-handler-found:true,这意味着如果找不到合适的请求处理程序时,将引发NoHandlerFoundException。我们再次在resources下一行中设置add-mappings: false,以确保Spring Boot不会覆盖我们的静态资源处理,例如CSS,JS,HTML等。

3. 验证全局异常处理类

现在,我们已经编写了全局异常处理类并配置了SpringBoot的配置文件。我们可以使用一些示例代码来验证这个全局异常处理类是否正常工作。下面就是两条关于如何测试全局异常处理类的示例:

示例一:测试系统异常

@RestController
public class TestController {

    @GetMapping("/test")
    public String test() {
        int i = 1 / 0;
        return "test";
    }
}

在上述示例代码中,我们在TestController中的test方法中人为地触发了一个异常,即 1/0,这会引发一个算术异常。接下来,我们启动SpringBoot应用程序,访问http://localhost:8080/test,我们就可以看到通过全局异常处理类进行统一处理并返回我们期望的JSON格式信息了。

示例二:测试自定义异常

除了系统异常,我们还可以在SpringBoot项目中定义自己的业务异常,并对其进行处理。

public class BusinessException extends RuntimeException {

    private String errorCode;

    public BusinessException(String message) {
        super(message);
    }

    public BusinessException(String errorCode, String message) {
        super(message);
        this.errorCode = errorCode;
    }

    public String getErrorCode() {
        return errorCode;
    }
}

@RestController
public class TestController {

    @GetMapping("/test")
    public String test() {
        throw new BusinessException("500", "自定义业务异常");
    }
}

在上述示例代码中,我们首先定义了一个自定义的业务异常类BusinessException,并编写了一个抛出业务异常的代码,接下来启动SpringBoot应用程序,访问http://localhost:8080/test,我们可以看到SpringBoot已经通过全局异常处理类对自定义的业务异常进行了统一处理,并将错误信息以JSON格式返回给前端。

以上就是如何在SpringBoot中添加全局异常处理类的完整攻略,希望能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot如何添加全局异常捕获类 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • Java System.currentTimeMillis()时间的单位转换与计算方式案例详解

    Java System.currentTimeMillis()时间的单位转换与计算方式案例详解 什么是Java中的System.currentTimeMillis()? 在Java中,我们可以通过System.currentTimeMillis()方法来获取当前时间戳,返回的是当前时间与UTC标准时间1970年1月1日0时0分0秒之间的毫秒数,也称为时间戳或…

    Java 2023年5月20日
    00
  • 详解Maven settings.xml配置(指定本地仓库、阿里云镜像设置)

    详解Maven settings.xml配置(指定本地仓库、阿里云镜像设置) 在使用Maven构建Java项目的过程中,设置Maven的settings.xml配置文件可以更好地控制项目依赖包的下载以及本地仓库的位置。本文将详细介绍如何配置Maven的settings.xml文件。 本地仓库设置 本地仓库是用来存储本地构建的项目所需的依赖的地方。默认情况下,…

    Java 2023年5月20日
    00
  • JSP 自定义标签第3/3页

    我来详细讲解一下 “JSP 自定义标签第3/3页” 的完整攻略。 什么是 JSP 自定义标签 JSP 自定义标签,指的是用户可以自定义自己的标签,在 JSP 页面上使用,达到简化 JSP 页面代码,增加可读性的目的。JSP 自定义标签可以分为两种类型: 动态内容标签:在标签体中执行动态内容,并输出结果。 静态内容标签:输出预定的静态内容,不需要执行动态逻辑。…

    Java 2023年6月15日
    00
  • Spring Boot Admin实现服务健康预警功能

    Spring Boot Admin是一个开源的监控和管理Spring Boot应用程序的工具。它提供了一个Web界面,可以方便地查看应用程序的健康状况、性能指标和日志信息。以下是Spring Boot Admin实现服务健康预警功能的完整攻略: 添加依赖 在Spring Boot应用程序中,我们需要添加spring-boot-starter-actuator…

    Java 2023年5月15日
    00
  • java随机生成时间字符串的方法

    下面是如何在Java中随机生成时间字符串的完整攻略: 1. 使用Java 8 DateTime API Java 8引入了一个新的DateTime API,让时间处理变得更加优雅。我们可以使用LocalDateTime类来生成现在的时间,然后使用format()方法将其格式化为字符串类型。下面是示例代码: import java.time.LocalDate…

    Java 2023年5月20日
    00
  • C#动态webservice调用接口

    下面我将为您详细讲解“C#动态webservice调用接口”的完整攻略。 1. 确认webservice的接口地址和方法名称 在使用新的webservice之前,必须确定它的接口地址和方法名称。可以通过与webservice API的提供者沟通或查看文档进行确认。通常情况下,webservice的接口地址以.asmx文件或.svc文件结尾。 2. 创建web…

    Java 2023年5月19日
    00
  • 详解java一维数组及练习题实例

    详解Java一维数组及练习题实例 什么是一维数组? 在Java中,数组是一组具有相同数据类型的连续存储的数据集合。一维数组就是有限个相同类型的数据的集合,每个元素都可以通过一个索引(下标)访问。Java的数组是一个引用类型,它是由一个固定大小的、连续的、内存空间相邻的元素组成的集合,这些元素具有相同的数据类型。 如何创建一维数组? 我们可以使用[]或者new…

    Java 2023年5月26日
    00
  • kafka生产者和消费者的javaAPI的示例代码

    以下是关于Kafka生产者和消费者JavaAPI的示例代码的完整攻略。 Kafka Kafka是一个分布式流处理平台,主要由以下组件构成: 生产者(Producer) 消费者(Consumer) 主题(Topic) 分区(Partition) 偏移量(Offset) Broker ZooKeeper Kafka的生产者和消费者JavaAPI提供了开发人员构建…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部