Я собирался предложить не перехватывать исключение, поэтому прежде чем я предложил протестировать его сам, и если вы установите его, чтобы выбрасывать все исключения, даже если вы не выбрасываете исключение, все его исключения по-прежнему выбрасываются. Мне придется согласиться с Шив Кумаром: либо отрегулируйте свои настройки во время отладки приложения, либо примите ограничения на то, что вы делаете.
Причина, по которой bool.TryParse работает, заключается в том, что он проверяет каждый символ, подобно тому, как Int32.TryParse проверяет, чтобы каждый символ в строке был 0-9 или любой другой допустимый числовой символ.
Конечно, вы можете написать свой собственный сетевой класс и не создавать исключение при сбое соединения.
TryParse не сгенерирует исключение, вы должны перехватить любое исключение, которое выдается, если вы используете bool.Parse с помощью try {} catch {}, в противном случае, если вы попытаетесь проанализировать что-то, не являющееся логическим значением, оно сгенерирует необработанное исключение , TryParse был добавлен позже в истории .NET, Parse - более классический метод, позволяющий программисту обрабатывать все непредвиденные данные и проверять ввод перед попыткой анализа данных.
Я должен добавить, что TryParse вернет false, если не удастся проанализировать значение как результата метода false, так и переменной out, которую я считаю ложной. По крайней мере, это относится к Int32
http://msdn.microsoft.com/en-us/library/system.boolean.tryparse.aspx
Полагаю, смысл того, как работают TryParse и Parse, заключается в том, что они совершенно разные звери по сравнению с TcpClient. Полагаю, мне следует уточнить, что базовый процесс проверки похож, за исключением того, что один выдает исключение, а другой - нет, и, конечно, один возвращает то, что было фактически проанализировано.