没有控制器时的 Spring Boot 异常处理

Posted

技术标签:

【中文标题】没有控制器时的 Spring Boot 异常处理【英文标题】:Springboot exception handling when there is no controllers 【发布时间】:2021-04-13 02:23:30 【问题描述】:

我有一个没有任何控制器类的 spring-boot 应用程序。 如何为此应用程序编写异常处理程序。使用 @ControllerAdvice 注释的异常处理程序类不起作用。

【问题讨论】:

ExceptionHandler 和 ControllerAdvice 用于处理控制器级别的异常。对于方法级别的异常处理,您必须使用经典的 try/catch 块。参考ekiras.com/2016/02/… 【参考方案1】:

如果您正在开发web applications,ErrroController 可用。

@Controller
@RequestMapping("$server.error.path:$error.path:/error")
public class MyErrorController implements ErrorController 

    private final ErrorAttributes errorAttributes;

    public MyErrorController(final ErrorAttributes errorAttributes) 
        this.errorAttributes = errorAttributes;
    

    @Override
    public String getErrorPath() 
        return null;
    

    @RequestMapping
    public ResponseEntity<Map<String, Object>> error(final HttpServletRequest request) 
        final WebRequest webRequest = new ServletWebRequest(request);
        final Throwable th = errorAttributes.getError(webRequest);

        // ...
        // see also: BasicErrorController implementation
    



【讨论】:

我的应用程序中没有任何控制器类

以上是关于没有控制器时的 Spring Boot 异常处理的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot + 调度程序 + Spring Data JPA + Oracle 中的异常处理

Spring Boot 全局控制器建议未在 Spring 上下文中加载

Spring Boot Endpoints 中的异常处理

Spring boot 异常配置

Spring boot 异常配置

Spring Boot制作个人博客-框架搭建(异常处理)