如何在Socket上调试第一次机会异常?

 用户cnhr0qjy0s 发布于 2023-02-05 09:06

在我的C#/ WPF/.Net 4.5程序中,我正在尝试在套接字上执行Disconnect(),当我这样做时,我得到一个

System.dll中发生了'System.Net.Sockets.SocketException'类型的第一次机会异常

...在Visual Studio输出窗口中.

我的代码包含在try/catch中,但它永远不会落入catch中...

    try
      {
          if (_TCPConn.Connected)
          {
              _TCPConn.Shutdown(SocketShutdown.Both);
              _TCPConn.Disconnect(true);   // SocketException
          }
      }
      catch (Exception e)
      {
   . . . 
      }

到目前为止,Socket工作正常 - 它用于与一些制造机器进行通信,所有这些工作都很完美.我在使用和不使用Shutdown()时尝试了相同的结果.如果我让程序在第一次机会异常后继续运行,整个程序就会消失并退出调试器.然后输出窗口中的消息说

程序'[0xE6C] ProcFacTest.vshost.exe:Managed(v4.0.30319)'已退出,代码为0(0x0).

我如何找出导致这种情况的原因?

1 个回答
  • 第一步是禁用"Just My Code".这可能不是必需的,但IDE可能会将您的用户代码与系统代码混淆,从而抑制异常.我通常在进行异常调试时执行此操作

    工具 - >选项 - >调试

    取消选中"启用Justy My Code Debugging"

    下一步是告诉Visual Studio在抛出该特定异常时中断.

    调试 - >例外

    展开"公共语言运行时异常",直到到达"System.Net.Sockets.SocketException"

    检查此"异常"的"Thrown"

    2023-02-05 09:10 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有