Trzy rodzaje wyjątków w Javie
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.