求救:一个 Apache commons-upload 使用过程中遇到的离奇问题?!?!

2017-01-30 21:33:27 +08:00
 alonezero

问题场景: Java Servlet 中利用 try_catch 捕捉异常,若发生异常则在 catchresponse.getWriter().writer("error!") 响应一句话。

问题:如果发生 Java 自身提供的一些异常比如 Exception, ArithmeticException 等等,可以成功响应;但若发生 commons-upload 提供的异常比如 UploadException, FileSizeLimitExceededException 这些,则无法响应,request 转发也同样失效!!!浏览器信息:无法显示!

这是咋回事啊?我查了老半天,别人也是这样写,真的把我搞懵逼了~求救啊!!!

组件版本:

1955 次点击
所在节点    问与答
6 条回复
zhiyuan91
2017-01-30 22:15:30 +08:00
代码怎么写的?
alonezero
2017-01-30 22:36:16 +08:00
@zhiyuan91
``` java
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload sfu = new ServletFileUpload(factory);
List<FileItem> fileItems = new ArrayList<FileItem>();
sfu.setFileSizeMax(3*1024*1024); // 限制单个文件大小
try {
fileItems = sfu.parseRequest(request);
} catch (FileUploadException e) {
// throw new RuntimeException("文件上传失败~"+e.getMessage());
response.getWriter().write("文件上传失败");
return;
}
```
代码就是这样,就一个 try_catch 情况就是我说的那样。真的是见了鬼了
NeinChn
2017-01-30 22:47:50 +08:00
"如果发生 Java 自身提供的一些异常比如 Exception, ArithmeticException 等等,可以成功响应"
但是代码贴的 catch 语句是:"catch (FileUploadException e) "
ArithmeticException 不可能被 Catch 住的,楼主你这到底在表达什么...
alonezero
2017-01-30 22:48:45 +08:00
@NeinChn 代码我改过好过次了。那是实验出来的结论
codingadog
2017-01-30 22:49:02 +08:00
这个 catch 的 exception 类型不大对啊……
alonezero
2017-01-30 22:50:35 +08:00
@NeinChn 我是直接 catch Exception 实验的。发生 Java 自身提供的可以响应。发生 fileupload 里的异常就无法响应。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/337449

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX