日期:2014-05-20  浏览次数:20679 次

网络编程在处理两个异常时出错了??
本段代码是客户端的一小段程序,主要是读取服务器端的消息。问题:如果关闭了服务器,想捕获这个异常
(SocketException se),但想同时捕获两个异常时有些疑问?

Java code
                      boolean b=true;
                while(b){
                try {
                    str=dis.readUTF();                                                                 ta.append(str);
                    if(s.equals("服务器:exit\n"))
                        break;
                    
                }[b] catch (SocketException se) {            [color=#FF0000]//如果两个异常调换位置,怎么出错了???[/color]                                                               System.out.println("服务器端已关闭");    
                    b=false;
                    
                }
                catch (IOException e){
                    e.printStackTrace();
                }[/b]            
                                          }
                
                try {
                    
                    ta.append("服务器端终止连接,请退出程序!!!");
                    dos.close();
                    dis.close();
                    s.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            
        });


------解决方案--------------------
SocketException是IOException的子类,如果先写IOException自然就不会进入到ScoketException了。