首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何获取在spring错误控制器中抛出的异常类

在Spring错误控制器中获取抛出的异常类,可以通过以下步骤实现:

  1. 创建一个自定义的错误处理器类,该类需要实现Spring的ErrorController接口。可以命名为CustomErrorController
  2. 在自定义的错误处理器类中,重写getErrorPath()方法,返回一个自定义的错误路径。例如,可以返回/error
  3. 在自定义的错误处理器类中,添加一个处理错误的方法,可以命名为handleError()。该方法需要使用@ExceptionHandler注解,并指定要处理的异常类。
  4. handleError()方法中,可以通过HttpServletRequest对象的getAttribute()方法获取抛出的异常类。可以使用"javax.servlet.error.exception"作为参数。
  5. handleError()方法中,可以对异常进行处理,例如记录日志、返回自定义的错误信息等。

以下是一个示例代码:

代码语言:txt
复制
import org.springframework.boot.web.servlet.error.ErrorController;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;

@RestController
@ControllerAdvice
public class CustomErrorController implements ErrorController {

    @Override
    public String getErrorPath() {
        return "/error";
    }

    @RequestMapping("/error")
    public String handleError(HttpServletRequest request) {
        // 获取抛出的异常类
        Exception exception = (Exception) request.getAttribute("javax.servlet.error.exception");

        // 对异常进行处理
        if (exception != null) {
            // 记录日志或返回自定义错误信息
            return "发生错误:" + exception.getMessage();
        }

        return "发生未知错误";
    }

    @ExceptionHandler(Exception.class)
    public String handleException(Exception exception) {
        // 对特定异常进行处理
        return "发生异常:" + exception.getMessage();
    }
}

在上述示例中,CustomErrorController类实现了ErrorController接口,并重写了getErrorPath()方法,返回了自定义的错误路径/error。在handleError()方法中,通过HttpServletRequest对象的getAttribute()方法获取抛出的异常类,并进行相应的处理。在handleException()方法中,使用@ExceptionHandler注解指定要处理的异常类,并进行处理。

请注意,以上示例仅为演示目的,实际使用时可能需要根据具体需求进行适当修改。

推荐的腾讯云相关产品:腾讯云云服务器(CVM),产品介绍链接地址:https://cloud.tencent.com/product/cvm

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Java8Consumer抛出异常

最近在实现公司内部一个通用svn数据工具,其中有段代码是拿到当前更新后数据进行下一步操作,用是java8Consumer实现,代码如下: public void save(final DTO...,debug查看后发现是异常被调用方吃掉了,原因了原生Consumer不支持异常抛出,只能内部处理,接到反馈后,自己测试确实能复现,查看Consumer源码发现原生确实不支持抛出,查阅网络资料,发现只能重写一个...异常抛出 * @author:Erwin.Zhang * @date: 2021-03-01 10:59:19 */ @FunctionalInterface public interface...Consumer抛出异常 * @author:Erwin.Zhang * @date: 2021-03-01 10:58:31 */ public class Throwing { private...org.junit.Test; import org.junit.rules.ExpectedException; * @ClassName: ThrowingTest * @Description: 测试异常抛出

3.9K20
  • 工具如何获取Spring 容器 Bean?

    当然这只是一个理论,实际开发,我们往往要用到 Spring 容器为我们提供诸多资源,例如想要获取到容器配置、获取到容器 Bean 等等。...在这种情况下,就需要 Spring 容器 Bean 真正意识到 Spring 容器存在,才能要到这些东西,那么如何让一个 Bean 意识到 Spring 容器存在呢?... @Import 作为元注解使用时,通过 @Import 导入配置如果实现了 ImportAware 接口就可以获取到导入该配置接口数据配置。...接下来我们就可以一个非 Spring 管理 Bean ,随时随地查询 Bean 了,像下面这样: UserService userService = BeanUtils.getBean("userService...Spring 容器所管理 Bean 获取Spring 容器 Bean 了。

    1.2K10

    如何在非Spring容器管理中注入获取 Spring容器 Bean?

    如何在非Spring容器管理中注入/获取 Spring容器 Bean? 前言:此文仅限新手入行,大佬回避。...我们使用Spring开发程序时候,Spring提供了很方便对象管理方式,即IOC,而且也提供了非常友好便捷对象注入方式DI, 只要是被Spring容器所管理,就可以使用@Resource或者...什么是被Spring容器管理? 只要是被称之为Bean就是被Spring容器管理。...不了解可以看看小简写这一篇: 将Bean交给Spring容器管理几种方式 Spring管理怎么办? 有时候我们就是需要在非Spring管理中使用Bean怎么办呢?...比如我这一篇: 踩坑篇之WebSocket实现无法使用@Autowired注入对象 解决方法 我们定义一个上下文类,Spring将Bean全部扫描完成后,我们去使用去实现ApplicationContextAware

    4K40

    Spring代码获取Bean方式

    方法一:初始化时保存ApplicationContext对象 方法二:通过Spring提供utils获取ApplicationContext对象 方法三:继承自抽象ApplicationObjectSupport...获取springbean方式总结: 方法一:初始化时保存ApplicationContext对象 ApplicationContext ac = new FileSystemXmlApplicationContext...然后通过它获取须要实例。上面两个工具方式差别是,前者获取失败时抛出异常。后者返回null。...能够方便获取ApplicationContext。 Spring初始化时。...提供后三种方法能够实如今普通中继承或实现对应或接口来获取spring ApplicationContext对象,可是使用是一定要注意实现了这些或接口普通java一定要在Spring

    2.1K10

    Hystrix降级逻辑如何获取触发异常

    通过之前Spring Cloud系列教程Spring Cloud构建微服务架构:服务容错保护(Hystrix服务降级)》一文,我们已经知道如何通过Hystrix来保护自己服务不被外部依赖方拖垮情况...但是实际使用过程中经常碰到开发反应“莫名”触发了降级逻辑情况。 为了更精准定位触发原因,或是降级逻辑需要根据不同异常做不同处理时,降级方法,我们希望可以获取到主逻辑抛出异常信息。...接下来就来介绍一下Hystrix两种不同实现方式如何在降级逻辑获取异常信息方法。...注解方式 先介绍一下用注解方式定义Hystrix命令是如何在降级逻辑获取异常,实现非常简单,先看下面的例子: @HystrixCommand(fallbackMethod = "fallback"...总结 我们实际使用Hystrix时候,有时候一些业务异常或者内部RPC由服务提供方抛出异常在消费方没能考虑周到,会触发一些意料之外降级。

    1.7K30

    Hystrix降级逻辑如何获取触发异常

    通过之前Spring Cloud系列教程Spring Cloud构建微服务架构:服务容错保护(Hystrix服务降级)》一文,我们已经知道如何通过Hystrix来保护自己服务不被外部依赖方拖垮情况...但是实际使用过程中经常碰到开发反应“莫名”触发了降级逻辑情况。 为了更精准定位触发原因,或是降级逻辑需要根据不同异常做不同处理时,降级方法,我们希望可以获取到主逻辑抛出异常信息。...接下来就来介绍一下Hystrix两种不同实现方式如何在降级逻辑获取异常信息方法。...注解方式 先介绍一下用注解方式定义Hystrix命令是如何在降级逻辑获取异常,实现非常简单,先看下面的例子: @HystrixCommand(fallbackMethod = "fallback"...总结 我们实际使用Hystrix时候,有时候一些业务异常或者内部RPC由服务提供方抛出异常在消费方没能考虑周到,会触发一些意料之外降级。

    1.8K30

    SpringBoot 之 普通获取Spring容器bean

    容器,交给spring容器进行管理,但是实际当中,我们往往会碰到一个普通Java,想直接使用spring提供其他对象或者说有一些不需要交给spring管理,但是需要用到spring一些对象...但是往往我们所做都是Web Application,这时我们启动spring容器是通过web.xml文件配置,这样就不适合使用上面的方式普通获取对象了,因为这样做就相当于加载了两次spring...容器,而我们想是否可以通过启动web服务器时候,就把Application放在某一个,我们通过这个获取,这样就可以普通获取spring bean对象了,让我们接着往下看 普通调用Spring... bean对象: 可以参考:http://412887952-qq-com.iteye.com/blog/1479445 这里有更多这方面的介绍,比较详细 下面介绍springboot如何使用...1.Spring Boot可以扫描包下 写工具为SpringUtil,实现ApplicationContextAware接口,并加入Component注解,让spring扫描到该bean springutil

    3.6K10

    如何手动获取 Spring 容器 bean?

    ApplicationContextAware 接口作用: 先来看下 Spring API 对于 ApplicationContextAware 这个接口描述: ?...即是说,当一个实现了这个接口之后,这个就可以方便地获得 ApplicationContext 所有bean。...换句话说,就是这个可以直接获取Spring配置文件,所有有引用到bean对象。 如何使用 ApplicationContextAware 接口? 如何使用该接口?很简单。...2、Spring配置文件中注册该工具 之所以我们能如此方便地使用该工具获取,正是因为Spring能够为我们自动地执行 setApplicationContext 方法,显然,这也是因为IOC缘故...,所以必然这个工具也是需要在Spring配置文件中进行配置

    2.6K10

    SpringAOP——Advice方法获取目标方法参数

    方法调用切点方法返回值:原返回值:改变后参数1 、bb,这是返回结果后缀 从结果可以看出:在任何一个织入增强处理,都可以获取目标方法信息。...另外,Spring AOP采用和AspectJ一样有限顺序来织入增强处理:“进入”连接点时,最高优先级增强处理将先被织入(所以给定两个Before增强处理,优先级高那个会先执行);“退出”...如果应用需要指定不同切面增强处理优先级,Spring提供了如下两种解决方案: 让切面实现org.springframework.core.Ordered接口:实现该接口只需要实现一个int...同一个切面两个相同类型增强处理同一个连接点被织入时,Spring AOP将以随机顺序来织入这两个增强处理,没有办法指定它们织入顺序。...如果只要访问目标方法参数,Spring还提供了一种更加简洁方法:我们可以程序中使用args来绑定目标方法参数。

    6K20

    【已解决】Spring容器找不到ServletWebServerFactory出现异常

    【已解决】Spring容器找不到ServletWebServerFactory出现异常 【已解决】ApplicationContextException: Unable to start ServletWebServerApplicationContext...-2.3.5.RELEASE.jar:2.3.5.RELEASE] ... 9 common frames omitted 异常分析 这个异常情况有很多种,实际就是缺失了需要没有找到。...也就是容器没有注入ServletWebServerFactory。 解决方案 这个异常可能有多个解决方案,因为有很多原因。我先说说我用于解决问题方案。...application.properties可以进行添加: spring.main.web-application-type=none 如果是yml文件,也就是 application.yml,可以添加...解决方案三 最后,可能就是缺失那个了。检查一下依赖。 是不是有spring-boot-starter-web依赖了。 如果没有,那么pom.xml文件中加好配置。

    15K41

    Spring Boot REST API错误处理指南

    以下是该程序实现端点URL: GET /birds/{birdId} 获取相关信息,如果没有找到,则抛出异常。...RestController是用于REST操作最基本注解。 ExceptionHandler这个Spring注解提供了一种机制,用来处理执行程序期间抛出异常。...此注解将作为处理此控制器抛出异常入口点。总而言之,最常见方法是@ControllerAdvice方法上使用@ExceptionHandler,以便将异常处理应用于全局或控制器子集。...这样我们可以一个地方定义如何处理这样异常,当ControllerAdvice覆盖抛出异常时,这个处理程序就会被调用。...现在,我们来看看如何创建一个方法来处理没有Spring BootResponseEntityExceptionHandler声明异常

    3.2K20

    Java Tomcat 如何加载

    一、加载 JVM并不是一次性把所有的文件都加载到,而是一步一步,按照需要来加载。 比如JVM启动时,会通过不同加载器加载不同。...当用户自己代码,需要某些额外时,再通过加载机制加载到JVM,并且存放一段时间,便于频繁使用。 因此使用哪种类加载器、什么位置加载都是JVM重要知识。...最顶层加载器首先针对其特定位置加载,如果加载不到就转交给子类。 如果一直到底层加载都没有加载到,那么就会抛出异常ClassNotFoundException。...三、Tomcat加载 Tomcat加载稍有不同,如下图: ?...另外呢,开发者也会因为粗心而犯下面的错误 CATALINA_HOME/lib 以及 WEB-INF/lib 中放置了 不同版本jar包,此时就会导致某些情况下报加载不到错误

    2.5K20

    解决 Spring Boot 运行 JUnit 测试遇到 NoSuchMethodError 错误

    本文章,我们将会解决 Spring Boot 运行测试时候,得到 NoSuchMethodError 和 NoClassDefFoundError  JUnit 错误。...上面的情况结果就是 JUnit launcher 尝试用老版 JUnit 版本不存在来运行。 知道上面的原因后,我们下面来看看可以使用一些修复方法。...针对 Gradle project 项目,我们可以使用下面的属性配置 ext['junit-jupiter.version'] = '5.7.1' 针对其他项目 在上面的部分,我们了解了如何Spring...Boot 来修正 NoSuchMethodError 和 NoClassDefFoundError 错误,这个错误 Spring Boot 属于比较常见错误。...结论 本文章,我们对 Spring 常见 NoSuchMethodError 和 NoClassDefFoundError JUnit 错误进行了一些阐述,并且针对这个问题提供了解决方案。

    2.5K20

    第7章—SpringMVC高级技术—处理异常

    Spring提供了多种方式将异常转换为响应: 特定Spring异常将会自动映射为指定HTTP状态码;   异常上可以添加@ResponseStatus注解,从而将其映射为某一个HTTP状态码; 方法上可以添加...3.1将异常映射为HTTP状态码 默认情况下,Spring会将自身一些异常自动转换为合适状态码。...3.3异常处理方法 若在响应不仅要包括状态码,还要包含所产生错误,此时的话,就不能将异常视为HTTP错误了,而是要按照处理请求方式来处理异常了。...3.4为控制器添加通知 如果多个控制器中都会抛出某个特定异常,那么你可能会发现要在所有的控制器方法重复相同@ExceptionHandler方法。...带有@ControllerAdvice注解,以上所述这些方法会运用到整个应用程序所有控制器带有@RequestMapping注解方法上。

    1.3K40

    第四十五章:基于SpringBoot 设计业务逻辑异常统一处理

    我们平时项目研发过程异常一般都是程序员最为头疼问题,异常抛出、捕获、处理等既涉及事务回滚,还会涉及返回前端消息提醒信息。那么我们怎么设计可以解决上面的两个痛点呢?...实例后调用getMessage方法,根据传入errCode就可以直接从接口实现实例获取到未格式化异常描述!...开发过程异常跑出时所用到errCode一般存放在枚举类型或者常量接口内,在这里我们选择可扩展相对来说比较强枚举类型,代码如下: /** * 错误码枚举类型 * ===============.... */ USER_STATUS_FAILD, //...添加其他错误码 } 异常码枚举内容项是需要根据数据库异常信息表对应变动,能够保证我们抛出异常时,在数据库内有对应信息...那么我们遇到异常后,请求已经不再控制器内了,已经交付给控制器通知,那么我们通知如果同样想返回JSON数据,这里就需要配置@ResponseBody注解来实现。

    1.8K40
    领券