多次抛出异常

时间:2015-05-02 19:11:44

标签: c#

基本上我想要从代码块中捕获任何异常,然后解雇代码。

try {
     CODE
catch (Exception e) 
{
     DO THIS ONCE
} 
finally 
{
     CODE
}

深度

所以我一直在创建一个TCP / SOCKET服务器。哪个可以与多个客户端一起使用并发送/背诵(I / O)数据。它效果很好,现在已经很久了。但我在我的控制台中发现它说:

MyConsole

这很糟糕,因为如果它认为用户断开连接两次就会产生很多问题。我知道用户是否断开连接的方式是每隔200ms向他们发送数据。如果有错误然后打印,他们断开连接从客户端列表中删除它们,并断开流/ tcp。

 static bool currentlyUsing;
    private static void PingClient(Object o)
    {
        if (!currentlyUsing)
        {
            if (clientsConnected.Count != 0)
            {
                foreach (Client c in clientsConnected)
                {
                    try
                    {
                        c.tcp.Client.Blocking = false;

                        c.tcp.Client.Send(new byte[1], 0, 0);
                    }
                    catch (Exception e)
                    {
                        currentlyUsing = true;
                        Console.WriteLine("[INFO] Client Dissconnected: IP:" + c.ip + " PORT:" + c.port.ToString() + " Reason:" + e.Message);
                        clientsConnected.Remove(c);
                        c.tcp.Close();
                        break;
                    }
                    finally
                    {
                        currentlyUsing = false;
                    }
                    GC.Collect();
                }
            }
        }

有没有办法让它只捕获一次,或者多次捕获它但只激发我想要的代码一次?

0 个答案:

没有答案