当服务器被关闭时,我也会在服务器端关闭tcp连接。因此,我期望客户端会看到由readline引起的SocketException,捕获它并退出。但是异常没有被捕获!
以下是客户端循环代码:
while (true)
{
try
{
ricev = read.ReadLine();
}
catch(SocketException exc)
{
//It never gets in here
}
chat.Invoke(showMessage, ricev);
}
当我关闭服务器时,Visual Studio告诉我在System.dll中引发了一个“System.Net.Sockets.SocketException”的首次异常,但我无法捕获它。为什么会发生这种情况?我还尝试使用任何通用异常进行捕获。
catch
{
}
块,但这也不起作用。
任何帮助将不胜感激!
编辑:经过多次尝试后,我实际上发现SocketException根本没有被触发。这很奇怪,正如我在评论中所说的,在客户端在服务器之前关闭的相反情况下,异常被引发并且我可以捕获它。 我真的不知道发生了什么....
StreamReader
的构造函数中出现了问题吗? - user7116