C# 如何在服务器未运行时防止客户端崩溃?

C# 如何在服务器未运行时防止客户端崩溃?,c#,C#,我是c#的新手,尝试建立服务器-客户机连接以进行测试 目前,我有一个代码片段,当我的客户端应用程序在服务器不运行的情况下尝试连接时,它会崩溃。在我看来,崩溃似乎发生在client.Connect行中,我没有机会阻止它,因为崩溃发生时它没有从方法返回 同时查看MSDN也没有给我一些有用的信息 那么我需要做些准备吗? 因为仅仅检查返回值是不可能的,因为崩溃发生在方法内部 或者有没有一种方法我必须在运行连接方法之前检查连接性 Int32 port = 4999; Byt

我是c#的新手,尝试建立服务器-客户机连接以进行测试

目前,我有一个代码片段,当我的客户端应用程序在服务器不运行的情况下尝试连接时,它会崩溃。在我看来,崩溃似乎发生在
client.Connect
行中,我没有机会阻止它,因为崩溃发生时它没有从方法返回

同时查看MSDN也没有给我一些有用的信息

那么我需要做些准备吗? 因为仅仅检查返回值是不可能的,因为崩溃发生在方法内部

或者有没有一种方法我必须在运行连接方法之前检查连接性

        Int32 port = 4999;
        Byte[] teststring;
        GameConfiguration objGameConfClient = new GameConfiguration();
        TcpClient client = new TcpClient();

        client.Connect("XXX.XXX.XXX.XXX", port);

        if (client == null)
        {
            return;
        }

MSDN示例对我来说也没有处理此崩溃,是吗?

您能看到MSDN示例中的
try{…}catch(SocketException ex){}
?这应该为您指明了正确的方向。@Rhumborl正在尝试捕获C#中每个错误预防的解决方案?我在哪里可以找到诸如
SocketException
ofr later problems之类的关键字?这并不能阻止错误的发生,但它本质上是在您自己的代码中处理错误并阻止它完全破坏您的程序的唯一方法。您通常可以只捕获(异常e)(所有类型的异常都继承自此),但最佳实践是捕获特定类型。如果查看在MSDN上调用的特定方法,通常可以看到该方法可能引发的异常。然后,您可以根据需要捕获特定类型或仅捕获一般的
异常。啊,很高兴知道。谢谢学习新语言很难,想从编写良好的实践开始^^很好,开始就很好:)本页对C#中的异常处理做了一个不错的概述-
try
{
    client.Connect("XXX.XXX.XXX.XXX", port);
}
catch(Exception e)
{
    //XXX
}