系统菜单点击过快会抛如下异常:
java.net.SocketException: Connection reset by peer: socket write error
原因:jsp页面正在加载,未加载完全,第二个菜单已经点击了,把第一个菜单强制关闭了。
不影响程序运行,但异常日志会比较多,无法捕获。
这种情况大伙儿遇到过吗?怎么解决啊?
贴上main.jsp部分代码:
function findPanel(id)
{
var msg = '';
try{
//if(cid!=id){
Ext.Ajax.request({
params:{
id:id
},
url:'${pageContext.request.contextPath}/xtzy/getNode!getChildrenByParentId.action?',
success : function(response, options) {
//alert(response.responseText);
try{
var o = Ext.decode(response.responseText);
mainPanel.removeAll();
if(o.length){
for(var i = 0; i < o.length; i++){
addTabPanel(o[i].id,o[i].text,o[i].href);
}
mainPanel.setActiveTab(o[0].id);
document.getElementById('iframe'+o[0].id).src = o[0].href;
}
}catch(e){}
}}
);
//cid = id;
//}
}catch(e){ }
怀疑是在:mainPanel.removeAll();处强制清除tab页时抛的异常。但不知道怎么能捕获,请各位大虾赐教。在线等!
java.net.SocketException: Connection reset by peer: socket write error
原因:jsp页面正在加载,未加载完全,第二个菜单已经点击了,把第一个菜单强制关闭了。
不影响程序运行,但异常日志会比较多,无法捕获。
这种情况大伙儿遇到过吗?怎么解决啊?
贴上main.jsp部分代码:
function findPanel(id)
{
var msg = '';
try{
//if(cid!=id){
Ext.Ajax.request({
params:{
id:id
},
url:'${pageContext.request.contextPath}/xtzy/getNode!getChildrenByParentId.action?',
success : function(response, options) {
//alert(response.responseText);
try{
var o = Ext.decode(response.responseText);
mainPanel.removeAll();
if(o.length){
for(var i = 0; i < o.length; i++){
addTabPanel(o[i].id,o[i].text,o[i].href);
}
mainPanel.setActiveTab(o[0].id);
document.getElementById('iframe'+o[0].id).src = o[0].href;
}
}catch(e){}
}}
);
//cid = id;
//}
}catch(e){ }
怀疑是在:mainPanel.removeAll();处强制清除tab页时抛的异常。但不知道怎么能捕获,请各位大虾赐教。在线等!
<%@ page language="java" import="java.util.*" buffer="16kb" pageEncoding="gb2312"%>
你在page指令里面加上buffer="16kb"试试
服务器端response正在向客户端写入数据,此时客户端却关闭了浏览器,或者其他原因导致本次相应被关闭,就会抛出以上错误。所以重点看看response 的操作吧!
在发生异常的代码处使用
try {
} catch (Exception ex) {
}
肯定能catch到这个异常,异常处理代码里,不做任何操作,日志里就不会出现了
document.getElementById('iframe'+o[0].id).src = o[0].href;
异常出现在如上所示的代码中。每次点击菜单,我都会首先加载第一个菜单。正式加载第一个菜单的时候出现的这个问题。暂时不知道如何解决。