Wyjątki

Wyjątek w języku Java to obiekt, który opisuje pewną sytuację błędną lub nieprawidłową – wyjątkową. Jest to obiekt odpowiedniego typu, tj. obiekt klasy Throwable lub jej dowolnej podklasy.

Ważną częścią każdej aplikacji jest sygnalizowanie oraz obsługa pojawiających się błędów. Wystąpienie błędu w aplikacji zaimplementowanej w języku Java sygnalizujemy poprzez rzucenie wyjątku. Obsługa błędów to tzw. łapanie wyjątków.

Wystąpienie sytuacji wyjątkowej sygnalizujemy poprzez rzucenie wyjątku, a więc instancji klasy która opisuje dany rodzaj błędu. W ramach biblioteki standardowej języka Java (Java SE) zaimplementowano wiele klas opisujących popularne typy wyjątków. Poniższy diagram przedstawia trzon hierarchii dziedziczenia dla tych klas.

 

Wyjątki dzielą się na dwa rodzaje: kontrolowane i niekontrolowane. Kontrolowane to takie które musimy deklarować i obsługiwać. Wyjątki niekontrolowane także możemy obsługiwać, ale nie musimy. Co to dokładnie oznacza dowiemy się niebawem.

Wyjątki niekontrolowane to instancje klas Error RuntimeException oraz ich dowolnych podklas. Wyjątki kontrolowane to instancje klas Throwable Exception oraz ich podklas, z wyłączeniem podklas klas Error RuntimeException.

Wyjątki mogą być rzucane (zgłaszane) przez Wirtualną Maszynę Javy (JVM) oraz przez programistę. Najpopularniejszym wyjątkiem rzucanym przez JVM jest NullPointerException. Wyjątek ten rzucany jest przy próbie odwołania się do obiektu (np. próba uruchomienia metody) z użyciem referencji, która ma wartość null. NullPointerException jest podklasą klasy RuntimeException tak więc jest wyjątkiem niekontrolowanym – nie musimy go w żaden sposób deklarować czy obsługiwać.

Wyjątki możemy rzucać także sami. Robimy to, ilekroć chcemy zasygnalizować wystąpienie błędu. Możemy rzucać wyjątki standardowe, tj. instancje klas zdefiniowanych w bibliotece standardowej Java SE, ale możemy także definiować i rzucać wyjątki własne. Aby zdefiniować własny typ wyjątku wystarczy zaimplementować dowolną klasę będącą podklasą klasy Throwable lub dowolnej innej klasy definiującej wyjątek, np. klasy Exception czy RuntimeException. Wyjątki rzucamy używając słówka kluczowego throw, zgodnie ze składnią pokazaną poniżej:

throw {obiekt wyjątku};

gdzie {obiekt wyjątku} to jest rzeczywiście obiekt a nie nazwa klasy opisującej dany typ wyjątku. W typowej sytuacji obiekt ten tworzymy z użyciem operatora new. Przykład poniżej:

throw new Exception("Opis wyjątku");
0 0 votes
Daj ocenę