问题标签 [handlerexceptionresolver]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
8687 浏览

spring - MaxUploadSizeExceededException 不调用 Spring 中的异常处理方法

我正在使用 Spring 3.2.0。根据这个答案,我在带注释的控制器中有相同的方法,它实现了HandlerExceptionResolver接口,例如,

Spring 配置包括,

当文件大小超过时,应该调用前面的方法,它应该自动处理异常,但它根本不会发生。resolveException()即使发生异常,也不会调用该方法。处理这个异常的方法是什么?我错过了什么吗?

此处也指定了相同的内容。我不确定为什么它在我的情况下不起作用。


我已经尝试了以下方法@ControllerAdvice但它也没有奏效。

我也试图把冗长的 - Exception

ResponseEntity()在任何情况下都不会调用该方法。


一般来说,如果可能的话,我想按控制器基础(控制器级别)处理这个异常。为此,一个@ExceptionHandler带注释的方法应该只对那个特定的控制器有效,而不是对整个应用程序全局有效,因为我的应用程序中只有几个网页处理文件上传。当这个异常发生时,我只想在当前页面显示一个用户友好的错误信息,而不是重定向到web.xml文件中配置的错误页面。如果这甚至不可行,那么无论如何都应该处理这个异常,而不需要我刚才表达的任何自定义要求。

这两种方法都不适合我。我找不到更多关于处理这个异常的信息。它是否需要在 XML 文件中的某处或其他地方进行额外配置?


抛出异常后我得到的内容可以在以下快照中看到。

在此处输入图像描述

0 投票
1 回答
357 浏览

java - 在 Spring HandlerExceptionResolver 中抑制 strack 跟踪打印

我有这个处理程序:

如果未启用日志调试级别,我不想将堆栈跟踪打印到 jvm sterr,但是我因此在此处理程序之后输出堆栈跟踪...你能告诉我为什么吗?

调试我看到 log.isDebugEnabled() 在我的测试中是正确的错误

0 投票
1 回答
813 浏览

spring - 如何在 Spring 中处理 Tomcat 的 MaxUploadSizeExceededException?

我对此进行了一些研究,但结果相互矛盾。为了处理这个错误,有人说我需要HandlerExceptionResolver在我的一个控制器中实现。

以下是一些链接:

另一方面,其他人说这种方法是徒劳的,因为Exception它发生在请求处理流程之外:

我已经尝试了上述解决方案,但它们对我不起作用。正如预期的那样,这似乎Exception发生在 Spring 之外。即使使用 . 我也无法捕捉到这一点HandlerExceptionResolver

0 投票
1 回答
7080 浏览

java - 在 Spring 4.2 中设置 throwExceptionIfNoHandlerFound 无效。*

设置throwExceptionIfNoHandlerFound在 Spring 4.2.2 中无效。这对我很重要,因为我必须以 JSON 格式发送所有响应。

throwExceptionIfNoHandlerFound在我的AppInitializer中设置如下:

它似乎有效,因为DispatcherServlet#noHandlerFound像预期的那样抛出异常:

但是随后(这非常令人困惑!)每个异常都被捕获解决为错误视图。所以不可能NoHandlerFoundException通过使用Spring来处理 -@ExceptionHandler

问题:

我敢肯定,这是一个非常好的和有用的功能,但是有没有办法检测 404 错误来发送自定义响应而不是默认的 html 错误页面?

0 投票
0 回答
233 浏览

spring - Spring:捕获从 AccessDecisionManager 抛出的异常 - 不是来自控制器

将 Spring (4.2.4) 与 MVC (4.2.4) 和 Security (4.0.3) 一起使用。我已经实现了一个 AccessDecisionManager 并且在我的决定方法中我抛出了一个异常:

我既不能抓住“ SessionCompanyNotRoleTableCompanyException”也不能AccessDeniedException。我试过使用全局异常处理程序:

我什至创建了 ExceptionResolver 类,例如:

...并让它们在我的 web-config-class 中初始化,例如:

这些工作,即只有从控制器抛出异常时才会捕获异常。但不是decide来自AccessDecisionManager.

我应该如何以及如何实现可以在控制器外部(之前)捕获这些的东西?

编辑(添加SessionCompanyNotRoleTableCompanyException以向您显示其定义):

0 投票
1 回答
284 浏览

spring - HandlerExceptionResolver, MaxUploadSizeExceededException - 上传继续并且错误没有立即返回

我正在使用 Spring 3.1.1。我有一个文件上传功能并实现了 HandlerExceptionResolver 来处理文件大小限制。我已经在 spring mvc xml 中配置了“maxUploadSize”属性的大小。我的应用程序使用带有开放 ID 的弹簧安全性。

我在该上传控制器的 resolveException() 中使用下面的代码。RestResponse 是一个带有错误消息和状态的 pojo

我可以从日志中看到,resolveException() 被调用,但是 json 响应没有显示在 rest api 客户端/浏览器中。我可以在日志中看到异常(最大上传大小超过 10485760 字节;嵌套异常是 org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException:请求被拒绝,因为它的大小(30611515)超过了配置的最大值(10485760))上传后立即,但上传仍在继续,一段时间后,浏览器中会显示 json 错误消息(如上所示)。

我确实在 stackoverflow 和其他门户中检查了这个问题,但找不到为什么它没有显示或响应返回到 UI。

0 投票
2 回答
3496 浏览

spring - 无法实例化 [org.springframework.web.servlet.HandlerExceptionResolver];映射的模棱两可的 @ExceptionHandler 方法

我的GlobalExceptionHandlerController类:

我收到此错误:

感谢您的任何建议..

0 投票
0 回答
180 浏览

java - 在 spring 中自定义 ExceptionResolver 时出现意外行为

通过spring框架的文档了解了spring应用的自定义异常处理机制。根据文档,据说spring提供了一些默认的异常解析器。

SimpleMappingExceptionResolver

异常类名称和错误视图名称之间的映射。对于在浏览器应用程序中呈现错误页面很有用。

DefaultHandlerExceptionResolver

解决 Spring MVC 引发的异常并将它们映射到 HTTP 状态代码。另请参阅替代 ResponseEntityExceptionHandler 和 REST API 异常。

ResponseStatusExceptionResolver

使用 @ResponseStatus 注释解决异常,并根据注释中的值将它们映射到 HTTP 状态代码。

异常处理程序异常解析器

通过在@Controller 或@ControllerAdvice 类中调用@ExceptionHandler 方法来解决异常。请参阅@ExceptionHandler 方法。

但在我的要求中,我不想要所有这些解析器的支持,我只想让 ExceptionHandlerExceptionResolver 处理我的 Spring 应用程序中的异常。因此,我在 DispatcherServlet 中添加了以下配置。

DispatcherServlet相关配置。

在我的 Bean 配置 java 类中,我创建了以下 bean。

在文档中,指出

/** * 设置是否检测此 servlet 上下文中的所有 HandlerExceptionResolver bean。否则,* 只需要一个名为“handlerExceptionResolver”的 bean。*

默认为“真”。如果您希望此 servlet 使用单个 * HandlerExceptionResolver,请将其关闭,尽管在上下文中定义了多个 HandlerExceptionResolver bean。*/

但即使在所有这些配置之后,我看到 HTML 错误页面而不是 JSON 错误响应。

示例 ExceptionHandler 方法。

我做错了什么?我只需要在整个 Spring 应用程序中支持 ExceptionHandlerExceptionResolver 即可保持一致性。

0 投票
1 回答
709 浏览

spring-boot - @ControllerAdvice 中的 Spring-boot 处理 NoHandlerException

我想在 Springboot 应用程序中处理 NoHandlerException 并返回自定义错误消息。我将以下内容添加到我的 application.properties 并尝试覆盖错误消息。

错误没有命中 @ControllerAdvice... 它在 defaulthandlerexceptionresolver 中处理。有任何想法吗?

0 投票
0 回答
31 浏览

java - 组件为 HandlerExceptionResolver 扫描一个类

我有一个 HandlerExceptionResolver 类

我被告知需要对包进行组件扫描,我该怎么做?