Есть одна вещь, которая здесь не упоминалась.
С оператором if-else при каждом запуске кода гарантируется выполнение как минимум 1 из условия. Я уверен, что мы все знаем, как работает if-else-elseif, но для ясности ... часть if оператора всегда будет оцениваться, если оно ложно, то следующее else -if оценивается и так далее до тех пор, пока для оценки не останется только else .
Таким образом, использование оператора if-else повлияет на вашу производительность. Незначительно (в большинстве случаев), но для оценки требуется процессорное время.
операторы try-catch и исправьте меня, если я ошибаюсь, не учитывайте во время выполнения, пока они не потребуются (т.е. выдается исключение). Поэтому простое завершение кода в try-catch не повлияет на производительность до тех пор, пока оно фактически не будет обнаружено.
Кроме того, не уловка вызывает снижение производительности, а бросок.
И одно из важных замечаний: операторы try-catch НИКОГДА не должны использоваться для условной логики. Они должны использоваться только для того, для чего они предназначены: обработка исключений!
Очень важно перехватывать исключения, если вы знаете, что с ними делать. Если у вас нет способа правильно обработать исключение, вы должны его отпустить, поскольку для некоторого кода, находящегося дальше по цепочке, может быть лучший способ его обработать.
Обычно хорошей идеей будет иметь обработчик исключений на абсолютном верхнем уровне вашего приложения, чтобы отлавливать исключения до того, как их увидит пользователь. В ASP.NET вы можете сделать это в событии Application_Error файла global.asax. В других языках / средах вы делаете это в основном цикле, что бы это ни было.
Но обратите внимание, есть некоторые исключения, которые всегда лучше всего оставить незатронутыми. Иногда, когда возникает исключение, это показатель того, что состояние вашего приложения было серьезно скомпрометировано и ему нельзя доверять. Единственная безопасная вещь - убить и перезапустить.