gpt4 book ai didi

java - Spring Boot 执行器管理端点异常处理

转载 作者:行者123 更新时间:2023-12-05 07:41:18 26 4
gpt4 key购买 nike

问题:如何处理管理上下文中 MVC 端点中抛出的异常?

public class MyMvcEndpoints extends EndpointMvcAdapter {
@ResponseBody
@RequestMapping(method = GET, value = "/foo", produces = APPLICATION_JSON_VALUE)
public Foo foo() {
throw new FooNotFound("Foo Not Found!");
}
}

@ResponseStatus(value = HttpStatus.NOT_FOUND)
public class FooNotFound extends RuntimeException {
public NotFoundException(String message){
super(message);
}
}

使用当前配置,我收到 500 而不是 404。我尝试了异常处理的常用方法,如 ControllerAdvice、ExceptionHandler 方法等。没有成功。
我还在 EndpointWebMvcChildContextConfiguration 中找到了 CompositeHandlerExceptionResolver ,它负责异常处理。我尝试定义自己的 HandlerExceptionResolver bean,但它无法在管理上下文中找到我的解析器。

最佳答案

您可以使用 Controller 建议。 Spring 的 @ControllerAdvice 注释是 @Component 的一种特殊形式,用于处理 Controller 的横切关注点。最常见的用例是提供异常处理程序,但它也可以做一些其他巧妙的事情。

@ControllerAdvice
public class ExceptionControllerAdvice {

@ExceptionHandler(Exception.class)
public ModelAndView exception(Exception e) {
ModelAndView mav = new ModelAndView("exception");
mav.addObject("name", e.getClass().getSimpleName());
mav.addObject("message", e.getMessage());

return mav;
}
}

关于java - Spring Boot 执行器管理端点异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45435535/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com