Spring boot 无法捕获异常(多部分Mime部件文件超过最大文件大小)
我的springboot版本是2.0.2,我在controller类中创建了全局异常,如下所示:Spring boot 无法捕获异常(多部分Mime部件文件超过最大文件大小),spring-boot,Spring Boot,我的springboot版本是2.0.2,我在controller类中创建了全局异常,如下所示: @ExceptionHandler(Exception.class) @ResponseBody public Result handleException(Exception e, HttpSession session, HttpServletRequest request) { LOGGER.error(e.getMessage()); 但是我不能捕捉异常,似乎我应该在控制器之前捕捉
@ExceptionHandler(Exception.class)
@ResponseBody
public Result handleException(Exception e, HttpSession session, HttpServletRequest request) {
LOGGER.error(e.getMessage());
但是我不能捕捉异常,似乎我应该在控制器之前捕捉异常,如何
org.eclipse.jetty.http.BadMessageException:400:无法分析表单
所容纳之物
位于org.eclipse.jetty.server.Request.getParameters(Request.java:390)
~[jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
位于org.eclipse.jetty.server.Request.getParameter(Request.java:1025)
~[jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
位于org.springframework.web.filter.hiddenhttmpmethodfilter.doFilterInternal(hiddenhttmpmethodfilter.java:75)
~[spring-web-5.0.6.RELEASE.jar:5.0.6.RELEASE]
位于org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
~[spring-web-5.0.6.RELEASE.jar:5.0.6.RELEASE]
位于org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)
~[jetty-servlet-9.4.10.v20180503.jar:9.4.10.v20180503]
位于org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
~[spring-web-5.0.6.RELEASE.jar:5.0.6.RELEASE]
位于org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
~[spring-web-5.0.6.RELEASE.jar:5.0.6.RELEASE]
位于org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)
~[jetty-servlet-9.4.10.v20180503.jar:9.4.10.v20180503]
位于org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533)
~[jetty-servlet-9.4.10.v20180503.jar:9.4.10.v20180503]
位于org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
~[jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
位于org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
~[jetty-security-9.4.10.v20180503.jar:9.4.10.v20180503]
位于org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
~[jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
位于org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
~[jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
位于org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595)
~[jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
位于org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
~[jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
位于org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1253)
~[jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
位于org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
~[jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
位于org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)
~[jetty-servlet-9.4.10.v20180503.jar:9.4.10.v20180503]
位于org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)
~[jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
位于org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
~[jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
位于org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1155)
~[jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
位于org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
~[jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
位于org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
~[jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
在org.eclipse.jetty.server.server.handle(server.java:531)~[jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
位于org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:352)
~[jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
位于org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)
~[jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
位于org.eclipse.jetty.io.AbstractConnection$ReadCallback.successed(AbstractConnection.java:281)
~[jetty-io-9.4.10.v20180503.jar:9.4.10.v20180503]
位于org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102)
~[jetty-io-9.4.10.v20180503.jar:9.4.10.v20180503]
位于org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)
~[jetty-io-9.4.10.v20180503.jar:9.4.10.v20180503]
位于org.eclipse.jetty.util.thread.strategy.eatwatyoukill.runTask(eatwatyoukill.java:333)
~[jetty-util-9.4.10.v20180503.jar:9.4.10.v20180503]
位于org.eclipse.jetty.util.thread.strategy.eatwatyoukill.doProduce(eatwatyoukill.java:310)
~[jetty-util-9.4.10.v20180503.jar:9.4.10.v20180503]
位于org.eclipse.jetty.util.thread.strategy.eatwatyoukill.tryProduce(eatwatyoukill.java:168)
~[jetty-util-9.4.10.v20180503.jar:9.4.10.v20180503]
位于org.eclipse.jetty.util.thread.strategy.eatwatyoukill.product(eatwatyoukill.java:132)
~[jetty-util-9.4.10.v20180503.jar:9.4.10.v20180503]
位于org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:760)
~[jetty-util-9.4.10.v20180503.jar:9.4.10.v20180503]
位于org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:678)
~[jetty-util-9.4.10.v20180503.jar:9.4.10.v20180503]
在java.lang.Thread.run(Thread.java:748)[?:1.8.0131]
原因:java.lang.IllegalStateException:多部分Mime部件文件超过最大文件大小
位于org.eclipse.jetty.util.MultiPartInputStreamParser$MultiPart.write(MultiPartInputStreamParser.java:174)
~[jetty-util-9.4.10.v20180503.jar:9.4.10.v20180503]
位于org.eclipse.jetty.util.MultiPartInputStreamParser.parse(MultiPartInputStreamParser.java:812)
~[jetty-util-9.4.10.v20180503.jar:9.4.10.v20180503]
在组织
@ControllerAdvice
public class RestResponseEntityExceptionHandler extends ResponseEntityExceptionHandler {
@ExceptionHandler(value = {MaxUploadSizeExceededException.class})
protected ResponseEntity<String> handle(MaxUploadSizeExceededException ex) {
return ResponseEntity.ok(ex.getMessage());
}
}
@Controller
public class MyController implements HandlerExceptionResolver {
@RequestMapping(value = "/test", method = RequestMethod.POST)
public ModelAndView someMethod(@RequestParam("file") MultipartFile file) throws Exception{
return new ModelAndView("success");
}
@Override
public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
if (e instanceof MaxUploadSizeExceededException){
return new ModelAndView("sizeLimitExceeded");
}
return new ModelAndView("otherException");
}
}