C#中的Try-catch无法捕获异常

4

我遇到了一个令人困惑的问题,但是我无法找到解决方法。我有几行代码,某个时刻,Send函数会抛出一个System.Net.Sockets.SocketException异常。然而,即使try有catch块,它也不能捕获异常并正常执行下去。当我尝试运行需要抛出相同异常的案例时,catch就能很好地捕获它。

我尝试过的:

  • 尝试更改VS调试设置“仅为我的代码启用”,但已经禁用了。
  • 我尝试了Debug和Release模式。
  • 我尝试使用通用的异常捕获程序,但没有一个有效。

以下是代码,在某个时刻,来自服务器的连接关闭,c套接字断开连接。它返回System.Net.Sockets.SocketException,但下面的catch无法捕获它。

            try
            {
                // Some code here . . . 

                c.Send(clientData);
                Print("Started uploading the file " + uploadFilename + ".");
                upBox.Text = "";
                Print("Finished uploading the file " + uploadFilename + ".");
            }
            catch (System.Net.Sockets.SocketException)
            {
                Print("You are disconnected from server!");
            }

如果没有任何东西捕获异常,你怎么知道它发生了?你会从Windows得到“程序停止工作”的提示吗? - Steve
我通过断点调试并在监视菜单中检查,看到了异常的抛出。在监视面板中,当我写c.send(clientData)时,我可以看到异常而不是发送的字节数。 - hevele
1
因此,异常发生时您的程序并未运行。这就是您所说的异常发生的“某个点”。您的程序并没有引起异常。在该上下文中,您尝试执行的操作可能无效。 - Steve
是的,我的程序不是异常的源头,是服务器。有没有解决这个问题并捕获它的方法? - hevele
1
但是你的代码没有抛出异常,那么为什么需要修复这个异常呢?你为什么认为这是服务器的问题,而不是因为你在程序中断点处尝试在监视窗口上通过套接字发送数据的原因?你以前能做到这一点吗?(完全透明:我不知道其中的任何一种方式,我从未尝试过) - Steve
同样的问题在这里。这个异常需要被修复,因为我的程序会在从服务器收到这个异常后崩溃!!! - Mamad
1个回答

1

我可以从监视菜单中看到抛出的异常。这是否意味着发送命令没有抛出异常? - hevele
发送命令确实抛出了异常,只是不是在上面的代码调用中 - 而是在观察窗口中尝试执行该方法时。 - Steve

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接