一、现象

SpringBoot项目配置了配置了上传文件的最大值限制,当上传的文件超过最大值的限制时会抛出MaxUploadSizeExceededException异常,如下
此时通过@RestControllerAdvice全局异常捕获类,也无法捕获到该异常,导致结果无任何响应

2020-01-07 09:40:31 [http-nio-8081-exec-1] [ERROR] o.a.c.c.C.[.[.[/video].[dispatcherServlet] [175]- Servlet.service() for servlet [dispatcherServlet] in context with path [/video] threw exception [Request processing failed; nested exception is org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size exceeded; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (71091753) exceeds the configured maximum (1048576)] with root cause
org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (71091753) exceeds the configured maximum (1048576)at org.apache.tomcat.util.http.fileupload.FileUploadBase$FileItemIteratorImpl.<init>(FileUploadBase.java:808)at org.apache.tomcat.util.http.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:256)at org.apache.tomcat.util.http.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:280)at org.apache.catalina.connector.Request.parseParts(Request.java:2868)at org.apache.catalina.connector.Request.parseParameters(Request.java:3196)at org.apache.catalina.connector.Request.getParameter(Request.java:1113)at org.apache.catalina.connector.RequestFacade.getParameter(RequestFacade.java:381)at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:85)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:526)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:860)at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1589)at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)at java.lang.Thread.run(Thread.java:748)

二、在SpringBoot的application.properties文件中加上如下配置

spring.servlet.multipart.max-file-size = 50MB
spring.servlet.multipart.max-request-size = 50MB
spring.servlet.multipart.resolve-lazily=true #设置为懒加载,不然依然会捕获不到异常
server.tomcat.max-swallow-size = 100MB # 最重要的是这一行,可设置为 -1 不作限制

注意: 上面最重要的是要配置内嵌的 tomcat 的最大吞吐量即 max-swallow-size,可以设置 -1 不限制,也可以设置一下比较大的数字。当上传文件超 tomcat 的大小限制后会先于 Controller 触发异常,所以这时我们的异常处理类无法捕获 Controller 层的异常了,这就是无法捕获到异常的根本原因。

配置全局异常类,用于捕获MaxUploadSizeExceededException 异常

@RestControllerAdvice(annotations = {ControllerAdvice.class, RestController.class})
public class GlobalExceptionHandler {@ExceptionHandler(MultipartException.class)public ResponseResult uploadExcepttion(MultipartException e){return ResponseResult.failed(500, "上传失败");}
}

SpringBoot 无法捕获 maximum upload size exceeded相关推荐

  1. org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size exceeded; nes

    使用springboot上传文件,当文件超过2M报出异常 异常显示org.springframework.web.multipart.MaxUploadSizeExceededException: M ...

  2. Maximum upload size exceede上传文件大小超出解决

    在这里记录三种方法, 努力提高自己的姿势水平 application.yml配置 spring:servlet:multipart:enabled: truemax-file-size: 10MB # ...

  3. js中报错“Maximum call stack size exceeded“解决方法

    js中报错"Maximum call stack size exceeded"解决方法 参考文章: (1)js中报错"Maximum call stack size ex ...

  4. ERROR in app.js from UglifyJs RangeError: Maximum call stack size exceeded

    在使用webpack中的uglify时报错: ERROR in app.js from UglifyJs RangeError: Maximum call stack size exceeded 看了 ...

  5. bootstrap validator 出现Maximum call stack size exceeded

    如果用 c# 里面用的是 taghelper 的控件,有可能造成 Maximum call stack size exceeded bootstrap validator  必须是继承  bootst ...

  6. JS 异常: Uncaught RangeError: Maximum call stack size exceeded

    遇到了这个js异常, 总是吧浏览器搞崩溃,这是什么原因呢? 开始我也只能想到死循环, 也许是哪个条件判断写错了,其实不是.经过google,发现了一篇文章,内容请看: ================ ...

  7. JS报错:Uncaught RangeError: Maximum call stack size exceeded

    之前,遇到Uncaught RangeError: Maximum call stack size exceeded,查了一下,这个就是"最大堆栈超过了最大值",一般这种错误也是在 ...

  8. Vue -- 项目报错整理(1):RangeError: Maximum call stack size exceeded

    这几天项目运行报了个错: Uncaught RangeError: Maximum call stack size exceeded,刚开始看到 "returnNodeParameter&q ...

  9. 解决 VUE前端项目报错:RangeError: Maximum call stack size exceeded

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1. 我点击菜单按钮报错: RangeError: Maximum call stack size ...

  10. vue 微信开发工具 Maximum call stack size exceeded

    文章目录 现象 原因 解决方案 现象 某段代码出现了内存溢出的现象 原因 出现了死循环调用的代码片段 解决方案 仔细检查一下,很容易发现的 案例场景: [Vue warn]: Error in v-o ...

最新文章

  1. ReSharper 配置及用法
  2. 修改android virtual device路径
  3. 初级Java开发与架构之间的差距不仅仅是开发时间
  4. 网络请求之优化参数添加工具类自定义Map类
  5. C++的RTTI基本原理
  6. 线性方程组的5种描述方式
  7. 【漏洞预警】Intel爆CPU设计问题,导致win和Linux内核重设计(附测试poc)
  8. 计算机专业导论论文范文,计算机新导论论文范文
  9. 软件测试非功能性需求,什么是非功能测试?非功能测试包括哪些类型?
  10. KeilC51基础 利用仿真测试代码的运行时间
  11. c语言十六进制字符串求和,一串十六进制求和软件 两个十六进制怎么相加的
  12. 厦门大学计算机专业录取分数线2019,厦门大学录取分数线2019
  13. 2014校园招聘之一(8月华为机试题)
  14. 【Apache运维基础(5)】Apache的Rewrite攻略(2)
  15. ora-04098:触发器 无效且未通过重新验证问题解决之权限
  16. 使用ffmpeg合成哔哩哔哩m4s格式的音视频流为mp4
  17. “数”峰亮剑,优炫数据库助力国产数据库算法对抗赛成功举办
  18. 淘宝滑块的解决方法和api接口
  19. 1100 校庆(JAVA)
  20. 外汇天眼:如何交易外汇缺口?

热门文章

  1. android 360开机启动,手机360设置开机启动项
  2. python中的re模块
  3. 手机怎么识别图片上的文字
  4. 51单片机入门(3)点灯的进阶——跑马灯(通过阻塞延时实现)
  5. Android studio Minimum supported Gradle version is 7.2. Current version is 7.0.2.
  6. python面试题No5
  7. 有哪些基于苹果HomeKit的全屋智能家居组合
  8. Linux端口被占用怎么解决
  9. 服务器2008r2启动修复,Windows Server 2008 R2原生启动试用
  10. 评估期已过.有关如何升级您的测试版软件的信息,请访问,sql server 2008 r2评估期已过。有关如何升级的测试版软件的信息...