系统菜单点击过快会抛如下异常:
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页时抛的异常。但不知道怎么能捕获,请各位大虾赐教。在线等!

解决方案 »

  1.   

    这里可以不用到ajax吗?能讲详细一些吗?
      

  2.   

    话说这个可能是页面处理的数据过多造成的
    <%@ page language="java" import="java.util.*" buffer="16kb" pageEncoding="gb2312"%>
    你在page指令里面加上buffer="16kb"试试
      

  3.   

    这种情况发生在,服务器端response正在向客户端写入数据,此时客户端却关闭了浏览器,或者其他原因导致本次相应被关闭,就会抛出以上错误。
      

  4.   

    我也遇见过!正如楼上所说:
    服务器端response正在向客户端写入数据,此时客户端却关闭了浏览器,或者其他原因导致本次相应被关闭,就会抛出以上错误。所以重点看看response 的操作吧!
      

  5.   

    我也知道是因为客户端关闭了页面造成的,不影响程序功能。只是这种异常会写到日志中,很多,没办法控制,如果能屏蔽掉也要。到处都try catch 了,还是不行。大家有好的解决方式吗?
      

  6.   

    此异常发生在tomcat服务器内部
    在发生异常的代码处使用
    try {
    } catch (Exception ex) {
    }
    肯定能catch到这个异常,异常处理代码里,不做任何操作,日志里就不会出现了
      

  7.   

    mainPanel.setActiveTab(o[0].id);
    document.getElementById('iframe'+o[0].id).src = o[0].href;
    异常出现在如上所示的代码中。每次点击菜单,我都会首先加载第一个菜单。正式加载第一个菜单的时候出现的这个问题。暂时不知道如何解决。