Trzy rodzaje wyjątków w Javie

Kod programu, HTML i JavaScript na ekranie LCD

Dominik Pabis / Getty Images





Błędy to zmora zarówno użytkowników, jak i programistów. Deweloperzy oczywiście nie chcą, aby ich programy przewracały się na każdym kroku, a użytkownicy są teraz tak przyzwyczajeni do błędów w programach, że niechętnie akceptują płacenie ceny za oprogramowanie, które prawie na pewno będzie zawierało przynajmniej jeden błąd. Jawa ma na celu dać programiście sportową szansę w projektowaniu bezbłędnej aplikacji. Istnieją wyjątki, o których programista będzie wiedział, że są możliwe, gdy aplikacja wchodzi w interakcję z zasobem lub użytkownikiem i te wyjątki mogą być obsługiwane. Niestety są wyjątki, których programista nie może kontrolować lub po prostu przeoczyć. Krótko mówiąc, wszystkie wyjątki nie są sobie równe i dlatego programista powinien pomyśleć o kilku typach.

Wyjątek to zdarzenie, które powoduje, że program nie może działać w zamierzonym wykonaniu. Istnieją trzy typy wyjątków — sprawdzony wyjątek, błąd i wyjątek czasu wykonywania.



Sprawdzony wyjątek

Zaznaczone wyjątki to wyjątki, z którymi aplikacja Java powinna sobie poradzić. Na przykład, jeśli aplikacja odczytuje dane z pliku, powinna być w stanie obsłużyć |_+_| . W końcu nie ma gwarancji, że oczekiwany plik będzie tam, gdzie powinien. W systemie plików może się zdarzyć wszystko, o czym aplikacja nie miałaby pojęcia.

Pójdźmy o krok dalej w tym przykładzie. Powiedzmy, że używamy |_+_| klasa do odczytania pliku znakowego. Jeśli spojrzysz na Definicja konstruktora FileReader w api Java Java zobaczysz sygnaturę metody:



|_+_|

Jak widać, konstruktor wyraźnie stwierdza, że ​​|_+_| Konstruktor może rzucić |__+_|. Ma to sens, ponieważ jest bardzo prawdopodobne, że |_+_| Ciąg będzie od czasu do czasu błędny. Spójrz na następujący kod:

|_+_|

Pod względem składniowym instrukcje są poprawne, ale ten kod nigdy się nie skompiluje. Kompilator zna |_+_| Konstruktor może rzucić |_+_| i od kodu wywołującego zależy obsługa tego wyjątku. Są dwie możliwości - po pierwsze możemy przekazać wyjątek z naszej metody, określając |_+_| również klauzula:

|_+_|

Lub faktycznie możemy obsłużyć z wyjątkiem:

|_+_|

Dobrze napisane aplikacje Java powinny radzić sobie ze sprawdzonymi wyjątkami.



Błędy

Drugi rodzaj wyjątku jest znany jako błąd. Gdy wystąpi wyjątek, JVM utworzy obiekt wyjątku. Wszystkie te obiekty wywodzą się z |_+_| klasa. |__+_| klasa ma dwie główne podklasy — |_+_| i |__+_|. |__+_| class oznacza wyjątek, z którym aplikacja prawdopodobnie nie poradzi sobie.

Te wyjątki są uważane za rzadkie. Na przykład w JVM może zabraknąć zasobów, ponieważ sprzęt nie będzie w stanie poradzić sobie ze wszystkimi procesami, z którymi ma do czynienia. Możliwe jest, że aplikacja wykryje błąd, aby powiadomić użytkownika, ale zazwyczaj aplikacja będzie musiała zostać zamknięta, dopóki nie zostanie rozwiązany podstawowy problem.



Wyjątki w czasie wykonywania

A wyjątek w czasie wykonywania występuje po prostu dlatego, że programista popełnił błąd. Napisałeś kod, wszystko wygląda dobrze dla kompilatora i kiedy przejdziesz do uruchomienia kodu, przewraca się, ponieważ próbował uzyskać dostęp do elementu tablicy, który nie istnieje lub błąd logiczny spowodował wywołanie metody z wartością null. Lub dowolna liczba błędów, które może popełnić programista. Ale to dobrze, wykrywamy te wyjątki po wyczerpujących testach, prawda?

Błędy i wyjątki czasu wykonywania należą do kategorii niesprawdzonych wyjątków.