Cześć, nie do końca rozumiem wyjątki tzn. potrafię je wstawić do kodu itd. ale po co zgłaszać wyjątek który i tak nie zostanie przechwycony? Czy to nie wychodzi na jedno? Bo gdybyśmy go nie zgłosili to przecież program i tak przestanie działać i napisze dlaczego (np. przy dzieleniu przez zero).
Ale dlaczego wypieprzać program przy dzieleniu przez zero? Przecież można złapać wyjątek, zalogować, zgłosić błąd użytkownikowi i kontynuować dalej. Użytkownik może spróbować jeszcze raz z tymi samymi lub innymi danymi wejściowymi.
Wyjątki czy instrukcje warunkowe ?
Poza tym: jak piszesz coś więcej niż hello world, na przykład kod na > 1kk linii kodu z którego korzystają tysiące ludzi to nie chcesz wypluć użytkownikowi błędu "division by zero" albo "null pointer exception" albo innych zupełnie dla niego niezrozumiałych. Chcesz mu wyświetlić sensowny błąd z domeny biznesowej, na przykład "podałeś zły numer telefonu".
Dobra, dzięki za pomoc (link wyżej wiele wyjaśnił) ale co to znaczy, że program nie jest kaput? Przecież po zgłoszeniu wyjątku wszystko przestaje działać.
Ale przecież wyjątek możesz złapać, wtedy program wcale nie umiera ;) Tylko mozesz normalnie pracować dalej od miejsca gdzie złapałeś wyjątek. Na przykład możesz powtórzyć operację która się wysypała.
Jeśli próbujesz ściągnąć dane z internetu i poleciał ci wyjątek że nie da się nawiązać połączenia to możesz złapać ten wyjątek i spróbować ponownie.