簡體   English   中英

Spring MVC @ExceptionHandler無法捕獲異常

[英]Spring MVC @ExceptionHandler failing to catch an exception

我正在使用Spring MVC來接收使用表單上傳的文件。 這是我的Controller ,它接收請求並處理可​​能的異常:

@RequestMapping(method = RequestMethod.POST, 
                headers = {"content-type=multipart/form-data"}, 
                produces = "application/xml")
public @ResponseBody MyStuff processFormUpload( @RequestParam("file") CommonsMultipartFile file) throws 
    //return beautiful xml response generated from the input file;
}

@ExceptionHandler(Exception.class)
public ModelAndView exceptionHandler(Exception ex, HttpServletResponse response) {
    //return pretty exception page;
}

這是我初始化文件解析器的方式:

<bean id="multipartResolver"
      class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="maxUploadSize" value="100000"/>
</bean>

即使在生成響應時引發異常,一切也都能很好地工作。 唯一的問題是當有人試圖上傳大於maxUploadSize的文件時。 在這種情況下,exceptionHandler不捕獲異常,並且服務返回由MaxUploadSizeExceededException引起的丑陋的內部錯誤500

如何配置我的Web應用程序以捕獲此類異常? 我想使用@ExceptionHandlers而不必過多地更改項目結構。

據我所知,這些異常在數據綁定期間拋出,在實際到達控制器之前,因此導致500並且不調用異常處理程序方法。

到目前為止,我已經想出要處理你提到的內容的唯一方法是讓控制器實現'HandlerExceptionResolver'並為以下內容提供實現:

    public ModelAndView resolveException(HttpServletRequest request,
        HttpServletResponse response, Object handler, Exception exception)

我同意,它不像@ExceptionHandler那樣優雅或靈活。 希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM