Jest jedna rzecz, o której tu nie wspomniano.
W przypadku instrukcji if-else za każdym razem, gdy kod jest uruchamiany, co najmniej jeden z warunków jest gwarantowany do oceny. Jestem pewien, że wszyscy wiemy, jak działa if-else-elseif, ale dla jasności ... część instrukcji będzie zawsze oceniana, jeśli jest fałszywa, to następnie oceniany jest następujący , jeśli:, i tak dalej, aż do oceny pozostanie tylko , inaczej.
Używanie instrukcji if-else wpłynie na wydajność. Nieistotnie (w większości przypadków), ale przeprowadzenie oceny zajmuje czas procesora.
Wyrażenia try-catch i popraw mnie, jeśli się mylę, nie są brane pod uwagę w czasie wykonywania, dopóki nie są wymagane (tzn. Wyjątek został zgłoszony). Więc po prostu zawijanie kodu w try-catch nie wpłynie na wydajność, dopóki nie zostanie przez nią przechwycony wyjątek.
Ponadto, nie jest to haczyk, który powoduje uderzenie wydajności, ale rzut.
Jednym z głównych punktów, o których należy pamiętać to, że instrukcje try-catch nie powinny być NIGDY używane w logice warunkowej. Powinny być używane tylko do tego, do czego są przeznaczone: obsługa wyjątków!
Łapanie wyjątków jest niezbędne, jeśli wiesz, co z nimi zrobić. Jeśli nie masz możliwości prawidłowej obsługi wyjątku, powinieneś pozwolić mu odejść, ponieważ jakiś kod w górę łańcucha może mieć lepszy sposób na obsłużenie go.
Zazwyczaj dobrym pomysłem jest posiadanie handlarza wyjątkami na absolutnym najwyższym poziomie aplikacji, aby wychwytywać wyjątki, zanim zostaną zauważone przez użytkownika. W ASP.NET można to zrobić w zdarzeniu Application_Error pliku global.asax. W innych językach/środowiskach zrobiłbyś to w swojej głównej pętli, cokolwiek by to nie było.
Należy jednak pamiętać, że są pewne wyjątki, które zawsze najlepiej pozostawić niezatłoczone. Czasami, gdy wystąpi wyjątek, oznacza to, że stan aplikacji został poważnie naruszony i nie można mu ufać. Jedyną bezpieczną rzeczą do zrobienia jest zabicie i ponowne uruchomienie.
"Obsługa błędów" i "Obsługa wyjątków" to nie to samo. – ThunderGr