gpt4 book ai didi

spring-mvc - 通用的 @ExceptionHandler 和 DefaultHandlerExceptionResolver 可以玩得好吗?

转载 作者:行者123 更新时间:2023-12-03 16:35:29 24 4
gpt4 key购买 nike

我想实现一个 @ExceptionHandler这可以防止所有未捕获的异常到达客户端。像这样的东西...

@ControllerAdvice
public class ExceptionHandlingControllerAdvice {

private static final Logger logger = getLogger(ExceptionHandlingControllerAdvice.class);

@ExceptionHandler(Exception.class)
@ResponseStatus(value = INTERNAL_SERVER_ERROR)
public void handleAnyUncaughtException(Exception e) {
logger.error("This uncaught exception is being blocked from reaching the client.", e);
}
}

但这妨碍了 DefaultHandlerExceptionResolver 开箱即用的异常处理。 ,例如在失败时抛出 4xx 错误 @RequestBody验证检查 @Valid .好像 @ExceptionHandler优先并在 DHER 之前返回 500可以尝试返回一个 4xx。

有没有办法阻止未捕获的异常到达客户端,但仍然让 DefaultHandlerExceptionResolver做它的工作吗?

最佳答案

我找到了解决方案。我正在写一个 @ExceptionHandler显式处理所有标准 Spring MVC 异常,检查 manual为列表,跑过ResponseEntityExceptionHandler基类。

@ControllerAdvice 中扩展该基类添加一个 @ExceptionHandler对于具有关键区别的标准异常(exception),如果这些异常(exception)发生变化,您不必维护列表。 @ControllerAdvice现在看起来像这样。

@ControllerAdvice
public class ExceptionHandlingControllerAdvice extends ResponseEntityExceptionHandler {

private static final Logger logger = getLogger(ExceptionHandlingControllerAdvice.class);

@ExceptionHandler(Exception.class)
@ResponseStatus(value = INTERNAL_SERVER_ERROR)
public void handleAnyUncaughtException(Exception e) {
logger.error("This uncaught exception is being blocked from reaching the client.", e);
}
}

关于spring-mvc - 通用的 @ExceptionHandler 和 DefaultHandlerExceptionResolver 可以玩得好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29193190/

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