在下载excel表的时候,servlet需要response一个文件给前端,但是因为超时,报错:java.net.SocketException: Socket closed,然后想返回一个错误信息给页面,提示用户重新下载,怎么做?因为刚刚的response我发现不能用了。
代码:
try {
outputStream = response.getOutputStream();
wb.write(outputStream);
outputStream.flush();
outputStream.close();
} catch (IOException e) {
//我想在这里response一个错误信息给页面,怎么做???
}
把try{}catch{}去掉,异常信息会返回到页面的,如果需要自己定义异常信息,就在catch里重新抛出
try{}catch{}不能去掉的,因为我的逻辑里,还涉及到sql更新,如果发生异常,不能执行更新sql
@luoshifu: 那就捕获完异常,然后再catch里执行完你想要执行的逻辑操作,然后再把这个异常重新抛出去
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}
这种情况下response已经因为超时关闭了,看看异常就知道了
对了,这个超时时间是多少的?
@luoshifu捕获response超时异常,你这是捕获IOException
@wangzySKy: 一样可以抛出:java.net.SocketException: Socket closed的
@luoshifu: 捕获SocketException异常。我再不行Exception试试。
@wangzySKy: 我加上Exception了,但是我要的是,捕获到异常后,尤其是SocketException异常,返回一个异常信息给页面,这个时候response已经关闭,有没办法返回信息给页面??