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日

相关文章

  • RMI使用学习 小结

    RMI使用学习 小结 1. RMI简介 RMI(远程方法调用)是Java编程语言中用于实现远程过程调用的应用程序编程接口。RMI使一个Java虚拟机上的对象能够调用在另一个Java虚拟机上的对象的方法。RMI实现了对象级别的远程过程调用,用户不必关心底层的网络通讯细节。 RMI使用Java远程调用(Java Remote Method Invocation)…

    Java 2023年6月15日
    00
  • Java反射概念与使用实例代码

    Java反射是Java语言自带的一种强大的机制,允许在运行时动态地获取类的信息、访问或修改类的属性和方法等。本文将详细讲解Java反射的概念和使用,包含以下内容: 反射概述 反射实现方式 反射的作用与优缺点 反射使用的实例代码 反射概述 Java反射(Reflection)是Java语言中的一种机制。它可以让我们在运行时动态地获取类的信息、访问或修改类的属性…

    Java 2023年5月30日
    00
  • jsp实现Servlet文件下载的方法

    实现Servlet文件下载可以通过JSP页面的form表单提交或通过Servlet的输出流方式进行,下面分别进行讲解。 通过JSP页面的form表单提交下载文件 在JSP页面中添加form表单,设置action为需要下载文件的Servlet路径。 “`html 下载文件 “` 其中,fileName为要下载文件的文件名。 在Servlet中获取要下载的文…

    Java 2023年6月15日
    00
  • IntelliJ IDEA maven 构建简单springmvc项目(图文教程)

    以下是关于“IntelliJ IDEA maven 构建简单springmvc项目(图文教程)”的完整攻略,其中包含两个示例。 IntelliJ IDEA maven 构建简单springmvc项目(图文教程) IntelliJ IDEA是一款强大的Java集成开发环境,它可以帮助我们快速构建Java应用程序。Maven是一款强大的项目管理工具,它可以帮助我…

    Java 2023年5月17日
    00
  • JVM的垃圾回收算法一起来看看

    JVM的垃圾回收算法 在Java编程中,内存管理是一个非常重要的问题。Java虚拟机(JVM)的垃圾回收算法可以用来管理和清理不再使用的内存空间。本文将带你了解JVM的垃圾回收算法并提供一些示例。 垃圾回收算法 标记-清除(Mark and Sweep) 这是最早的垃圾回收算法之一,也是最容易实现的算法之一。该算法包括两个步骤:标记和清除。 标记阶段扫描堆中…

    Java 2023年5月19日
    00
  • springmvc集成shiro登录权限示例代码

    下面是关于SpringMVC集成Shiro登录权限的完整攻略,包含两个示例说明。 SpringMVC集成Shiro登录权限示例代码 Shiro是一个强大的Java安全框架,它提供了身份验证、授权、加密等功能。在SpringMVC中集成Shiro可以帮助我们更好地管理用户的登录和权限。在本文中,我们将介绍如何在SpringMVC中集成Shiro,并提供两个示例…

    Java 2023年5月17日
    00
  • 解决Tomcat启动失败:严重 [main] org.apache.catalina.util.LifecycleBase.handleSubClassException 初始化组件失败

    当Tomcat服务器启动的时候,有时候会遇到如下错误提示信息: 严重 [main] org.apache.catalina.util.LifecycleBase.handleSubClassException 初始化组件失败 这种错误一般是由于Tomcat启动出现了问题而引起的,可能是配置出错、依赖缺失、文件权限问题等,接下来我将详细讲解如何解决这种问题。以…

    Java 2023年6月2日
    00
  • 初识通用数据库操作类——前端easyui-datagrid,form(php)

    初识通用数据库操作类是一篇介绍如何使用easyui-datagrid和easyui-form来进行数据库操作的文章,涉及到的技术有PHP、jQuery、easyui等。 准备工作 在使用easyui-datagrid和easyui-form之前,需要先导入相关的js和css文件以及jQuery库。在此基础上,还需要创建数据库和相应的表格。本篇攻略将以mysq…

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