gpt4 book ai didi

spring - Spring 已弃用的 NoSuchRequestHandlingMethodException 的替代品是什么?

转载 作者:行者123 更新时间:2023-12-03 17:35:19 26 4
gpt4 key购买 nike

NoSuchRequestHandlingMethodException在 Spring 4.3 中被弃用,取而代之的是 annotation-driven handler methods .这是什么意思?异常仍然列在 documentation 中,而没有提及其已弃用的状态。如果我理解正确,当给定请求没有请求映射器时会抛出此异常。它似乎由 DefaultExceptionHandlerResolver 处理, here ,并且相关方法也已弃用。

如果不推荐使用此方法,我是否可以假设 Spring 不再抛出此异常?我应该如何用注释驱动的异常处理替换这个功能?如果不推荐使用此异常,我应该处理哪个异常?

旁注:我还注意到一个更新的 NoHandlerFoundException , here .这是替代品吗?如果是这样,为什么?它似乎在做同样的事情。为什么不推荐使用与其他 HTTP 状态代码相关的异常?这一切都没有多大意义。

最佳答案

NoSuchRequestHandlingMethodException 异常是 Spring 中已弃用的 multiaction 包的一部分:
https://docs.spring.io/spring-framework/docs/2.5.x/javadoc-api/org/springframework/web/servlet/mvc/multiaction/class-use/NoSuchRequestHandlingMethodException.html
如果您不使用多操作,则可以安全地摆脱该 catch 语句和/或停止 try catch 和处理该异常。例如,一些“异常到响应错误处理程序”示例代码可能如下所示,以 try catch 调度程序未找到正确映射时的情况:

   @ControllerAdvice
public class RestErrorHandler {

@ExceptionHandler({FileNotFoundException.class, NoSuchRequestHandlingMethodException.class})
@ResponseStatus(HttpStatus.NOT_FOUND)
@ResponseBody
public ErrorInfo process404(HttpServletRequest req, Exception ex) {
return handleException(req, HttpStatus.NOT_FOUND, ex);
}
}
但是最新的调度器(非多操作)永远不会抛出这样的异常,所以你可以简单地摆脱 NoSuchRequestHandlingMethodException ,而是处理 NoHandlerFoundException (默认情况下不会抛出,但你可以配置 spring 调度器来抛出它如果您真的需要,因为默认情况下,调度程序已经返回 404)。

关于spring - Spring 已弃用的 NoSuchRequestHandlingMethodException 的替代品是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45076007/

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