"Cześć, Amigo!"

„Cześć, Ellie! Jak tam życie?”

„Wspaniale, dziękuję. Jak się masz?”

„Świetnie, dziś rano wyjaśniono mi mnóstwo nowych rzeczy”.

„Cóż, to świetnie. Nie jesteś zmęczony?”

"Tak, to jest to. Jestem trochę zmęczony."

„W takim razie po prostu miałeś szczęście. Chciałem dziś omówić duży, złożony temat, ale w ostatniej chwili zmieniłem zdanie i zdecydowałem się omówić mały, łatwy temat”.

„Mały i łatwy? Jestem gotowy”.

„Dzisiaj szczegółowo przeanalizujemy temat wyjątków ”.

— Mówisz o obsłudze błędów?

„Nie należy myśleć o wyjątkach jako o błędach. Wyjątki są raczej raportami, że„ stało się coś nieoczekiwanego ”. Na podstawie tych raportów można zaproponować alternatywne działania”.

„Chodzi o metody.  Kiedy wywołujesz metodę, obiecuje ona zrobić to, do czego została powołana ” .

„Kiedy metoda z jakiegokolwiek powodu nie może wykonać tego, do czego została powołana, musi poinformować dzwoniącego”.

„Innymi słowy, najgorszą rzeczą, jaka może się wydarzyć, jest to, że metoda nie działa i nikomu o tym nie mówi. Nic nie może być gorszego. Tracisz kontrolę nad sytuacją, kiedy tak się dzieje” .

„Kiedy jesteś nowym programistą, wydaje się, że po prostu wywołujesz metody, a one na pewno zrobią to, o co ich poprosisz”.

„Kiedy jesteś doświadczonym programistą, wiesz, że mogą istnieć dziesiątki czynników, które wpływają na zdolność metody do wykonywania swojej pracy, i że istnieje wiele przypadków, które mogą uniemożliwić metodzie wykonanie jej zadania”.

„Z perspektywy programisty jest tysiąc razy lepiej, jeśli program kończy działanie po napotkaniu błędu, niż gdy program napotka błąd, a następnie kontynuuje pracę (niepoprawnie), a użytkownik nie zdaje sobie sprawy z tego, co się stało”.

„Więc program pokazujący coś złego może być gorszy, niż gdyby program został zamknięty i utracił wszystkie dane?”

„Dlaczego myślisz, że program po prostu pokazuje coś niepoprawnie? Może program zawiera wiele błędów i wszystkie dane zostaną bezpowrotnie utracone? Załóżmy, że wpisujesz tekst przez 3 godziny, ale żaden z nich nie zostanie zapisany, ponieważ błąd, który wystąpił po zaledwie dwóch minutach."

„Kiedy początkujący programista napotyka wyjątki, jest sfrustrowany”.

„Ale w rzeczywistości wyjątki ujawniają wszystkie możliwe scenariusze, które powinien był przewidzieć, ale tego nie zrobił”.

„Możesz zrezygnować z obsługi wyjątków, co uczyni cię złym programistą. Ale jeśli twoje metody nie zgłaszają wyjątków, to w ogóle nie jesteś programistą — ponieważ nie zrozumiałeś tej prostej prawdy:”

„metoda albo robi to, do czego została napisana, albo zgłasza wyjątek. Nie ma trzeciej opcji!”

„Dobra, wierzę ci. Obiecuję używać wyjątków”.

„Świetnie. Pozwól, że opowiem ci o hierarchii wyjątków:”

Hierarchia wyjątków, błędy - 1

„Hierarchia wyjątków opiera się na czterech klasach”.

„Najniższą klasą bazową jest Throwable ”.

„ Klasy błędów i wyjątków dziedziczą to”.

RuntimeException dziedziczy wyjątek ”.

„ Klasa Error jest klasą bazową dla błędów JVM, takich jak StackOverFlow , OutOfMemory ,…”

„Program zwykle nie może naprawić się po takich błędach, co prowadzi do jego zakończenia”.

„Rzeczywiście, co można zrobić, jeśli nie ma wystarczającej ilości pamięci, aby program działał normalnie lub nastąpiło przepełnienie stosu?”

" Wyjątek jest klasą bazową dla wszystkich zwykłych wyjątków zgłaszanych przez program.  RuntimeException to specjalny rodzaj wyjątku , który ma nieco inne reguły."

"Czym oni są?"

– Właśnie to teraz wyjaśnię.

„Jak zapewne pamiętasz, wyjątki dzielą się na dwie kategorie: zaznaczone i niezaznaczone ”.

„Jeśli metoda zgłasza sprawdzone wyjątki, to metoda, która ją wywołuje, musi otoczyć wywołanie blokiem try-catch . Cóż, albo to, albo ponownie zgłosić wyjątek (jego wywołującemu) przez wyraźne wskazanie zgłoszeń w sygnaturze metody”.

„Te zasady/ograniczenia nie dotyczą niesprawdzonych wyjątków”.

„Tak więc wszystkie wyjątki, które dziedziczą wyjątek, są uważane za sprawdzone. Z wyjątkiem wyjątków, które dziedziczą wyjątek RuntimeException, które są uważane za niezaznaczone”.

- Aha. Pamiętam, jak mówiłeś mi coś takiego wcześniej.

"Amigo! W każdym wywiadzie pytają o hierarchię wyjątków . Powtórzę raz jeszcze — w każdym wywiadzie . Ten temat trzeba znać doskonale."

„OK. Przeczytam wszystko jeszcze raz i wymyślę. Dzięki za pomoc, Ellie”.