黑马程序员技术交流社区

标题: try,catch,中用break无限循环异常 [打印本页]

作者: 猫咪不吃糖    时间: 2013-10-28 22:29
标题: try,catch,中用break无限循环异常
本帖最后由 猫咪不吃糖 于 2013-11-1 14:15 编辑
  1. try
  2.                     {
  3.                         length = socketClient.Receive(arrMsgRec);
  4.                     }
  5.                     catch (SocketException ex)
  6.                     {
  7.                         ShowMsg("异常:" + ex.Message+socketClient.RemoteEndPoint.ToString());
  8.                         break;
  9.                     }
  10.                     catch (Exception ex)
  11.                     {
  12.                         ShowMsg("未知异常:" + ex.Message);
  13.                         break;
  14.                     }
复制代码
开启服务器,开启客户端连接。
然后关掉客户端,断开连接。

出现了一个情况,无限循环输出异常消息;ShowMsg("异常:" + ex.Message+socketClient.RemoteEndPoint.ToString());
这是为什么??

系统是WIN7。
用return的话是正常的。而且后面也能继续接受其他客户端连接。

补充下,try catch外层是while(true)的持续监听的循环。
我的问题是,break是跳出到哪层?仅跳出catch语句吗?跳出后接着执行try?

但我看视频也是break,就不会无限循环啊,这是为什么?win7和XP不一样?


作者: 念念念念_、    时间: 2013-10-29 17:02
虽然关闭了连接,但是线程还在工作,在不断的连接,但是由于连接不到,所以会一直报错。应该在中断连接的时候,把字典集合中的地址和端口移除掉。把线程也结束掉。

  dict.Remove(socketClient.RemoteEndPoint.ToString());
   dictThread.Remove(socketClient.RemoteEndPoint.ToString());
   lbOnline.Items.Remove(socketClient.RemoteEndPoint.ToString());




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2