首页 新闻 会员 周边

java在response一个文件给前端,但是因为超时,报错,然后想返回一个错误信息给页面,怎么做?

0
悬赏园豆:15 [已关闭问题] 关闭于 2017-10-19 17:15

在下载excel表的时候,servlet需要response一个文件给前端,但是因为超时,报错:java.net.SocketException: Socket closed,然后想返回一个错误信息给页面,提示用户重新下载,怎么做?因为刚刚的response我发现不能用了。

代码:

try {
   outputStream = response.getOutputStream();

   wb.write(outputStream);
   outputStream.flush();
   outputStream.close();
} catch (IOException e) {

//我想在这里response一个错误信息给页面,怎么做???

}

luoshifu的主页 luoshifu | 初学一级 | 园豆:80
提问于:2017-09-28 15:33
< >
分享
所有回答(2)
0

把try{}catch{}去掉,异常信息会返回到页面的,如果需要自己定义异常信息,就在catch里重新抛出

海之殇 | 园豆:500 (菜鸟二级) | 2017-09-28 15:43

try{}catch{}不能去掉的,因为我的逻辑里,还涉及到sql更新,如果发生异常,不能执行更新sql

支持(0) 反对(0) luoshifu | 园豆:80 (初学一级) | 2017-09-28 15:51

@luoshifu: 那就捕获完异常,然后再catch里执行完你想要执行的逻辑操作,然后再把这个异常重新抛出去

支持(0) 反对(0) 海之殇 | 园豆:500 (菜鸟二级) | 2017-09-28 15:55
0

1.后台:

HttpSession session = request.getSession();
session.setAttribute("essmage","错误");

request.getRequestDispatcher("web.jsp").forward(request, response);

页面上:${sessionScope.essmage}

2.request.setAttribute("essmage","错误");

request.getRequestDispatcher("web.jsp").forward(request, response);

页面上:${essmage}

 

wangzySKy | 园豆:287 (菜鸟二级) | 2017-09-28 15:50

这种情况下response已经因为超时关闭了,看看异常就知道了

支持(0) 反对(0) luoshifu | 园豆:80 (初学一级) | 2017-09-28 15:57

对了,这个超时时间是多少的?

支持(0) 反对(0) luoshifu | 园豆:80 (初学一级) | 2017-09-28 16:01

@luoshifu捕获response超时异常,你这是捕获IOException

支持(0) 反对(0) wangzySKy | 园豆:287 (菜鸟二级) | 2017-09-28 16:01

@wangzySKy: 一样可以抛出:java.net.SocketException: Socket closed的

支持(0) 反对(0) luoshifu | 园豆:80 (初学一级) | 2017-09-28 16:19

@luoshifu: 捕获SocketException异常。我再不行Exception试试。

支持(0) 反对(0) wangzySKy | 园豆:287 (菜鸟二级) | 2017-09-28 16:24

@wangzySKy: 我加上Exception了,但是我要的是,捕获到异常后,尤其是SocketException异常,返回一个异常信息给页面,这个时候response已经关闭,有没办法返回信息给页面??

支持(0) 反对(0) luoshifu | 园豆:80 (初学一级) | 2017-09-28 16:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册