Я знаю .. Я знаю ... Выступление здесь не главное, но только для любопытства, что лучше?Что лучше: int.TryParse или try {int.Parse()} catch
bool parsed = int.TryParse(string, out num);
if (parsed)
...
ИЛИ
try {
int.Parse(string);
}
catch() {
do something...
}
Хотя я согласен с общей мыслью о том, что контекст является королем, я бы сказал, что TryParse * почти всегда * лучше, это немного больше, чем очень субъективное личное предпочтение. Ваш контрпример (различая различные исключения, которые могут быть выброшены) довольно необычен и, вероятно, лучше кодируется блоком catch для каждого типа исключений, а не для всех catch. – Joe
@Joe: да, если вы хотите различать разные типы исключений, все остальное, кроме определенных блоков catch, кажется очень странным. Мой ответ был направлен на обсуждение «Парса» и «TryParse», а не конкретных образцов кода в вопросе. Как я уже упоминал в других комментариях, я согласен с тем, что «TryParse» почти всегда * лучший путь, но ключевое слово «почти», а не «всегда». –
@ Joe: Я уже сделал этот аргумент. См. Комментарии к исходному вопросу. Право Фредрика об абсолютных утверждениях никогда не бывает правдой. (OMG парадокс!) –