Różnica między zaznaczonym wyjątkiem a wyjątkiem środowiska uruchomieniowego

Różnica między zaznaczonym wyjątkiem a wyjątkiem środowiska uruchomieniowego
Różnica między zaznaczonym wyjątkiem a wyjątkiem środowiska uruchomieniowego

Wideo: Różnica między zaznaczonym wyjątkiem a wyjątkiem środowiska uruchomieniowego

Wideo: Różnica między zaznaczonym wyjątkiem a wyjątkiem środowiska uruchomieniowego
Wideo: Relative Velocity - Basic Introduction 2024, Listopad
Anonim

Sprawdzony wyjątek a wyjątek w czasie wykonywania

Wyjątki to specjalne rodzaje zdarzeń, które mogą zakłócić normalny przebieg programu. Nazwa wyjątku pochodzi od „wyjątkowego zdarzenia”. Zgłaszanie wyjątku to proces tworzenia obiektu wyjątku i przekazania go do systemu wykonawczego. Gdy system wykonawczy odbierze obiekt wyjątku, spróbuje znaleźć kogoś, kto go obsłuży w stosie wywołań, przemierzając go w odwrotnej kolejności (w jakiej zostały wywołane metody). System runtime powiedzie się, jeśli znajdzie metodę z obsługą wyjątków. Obsługa wyjątków to blok kodu, który może oficjalnie obsłużyć wspomniany wyjątek. Jeśli system wykonawczy znajdzie odpowiednią procedurę obsługi, przekaże obiekt wyjątku do procedury obsługi. Nazywa się to łapaniem wyjątku. Jeśli jednak nie można obsłużyć wyjątku, program zostanie zakończony. W Javie wyjątki dziedziczą z klasy Throwable. Sprawdzone wyjątki to wyjątki, których obsługa jest wymuszana przez kompilator. Wyjątki czasu wykonania to rodzaj wyjątków, które nie są sprawdzane przez kompilator.

Co to jest sprawdzony wyjątek?

Sprawdzone wyjątki to obiekty klasy java.lang.exception lub jej podklas (z wyjątkiem java.lang. RuntimeException i jego podklas). Sprawdzone wyjątki są „sprawdzane” w czasie kompilacji. Oznacza to, że programista musi albo przechwycić, albo zgłosić te wyjątki, w przeciwnym razie kompilacja będzie się narzekać (powodując błąd kompilatora). Z tego powodu wiele sprawdzonych wyjątków jest bardzo dobrze znanych programistom. Na przykład, IOException i jego podklasy są sprawdzanymi wyjątkami, a ilekroć programista ma do czynienia z dostępem lub modyfikacją pliku, kompilator sprawdza, czy wszystkie możliwe wyjątki IOException są obsługiwane przez programistę.

Co to jest wyjątek środowiska wykonawczego?

Wyjątki uruchomieniowe składają się z java.lang. RuntimeException i wszystkich jego klas podrzędnych. Teoretycznie służą one temu samemu celowi, co sprawdzone wyjątki i mogą być zgłaszane lub obsługiwane jak sprawdzany wyjątek, ale ich obsługa nie jest wymuszana przez kompilator. Dlatego wyjątki Runtime należą do rodziny niesprawdzonych wyjątków. NullPointerException, NumberFormatEception, ClassCastException i ArrayIndexOutOfBoundsException są typowymi wyjątkami środowiska uruchomieniowego w Javie.

Jaka jest różnica między zaznaczonym wyjątkiem a wyjątkiem w czasie wykonywania?

Chociaż zarówno zaznaczone wyjątki, jak i wyjątki wykonawcze są niepożądanymi zdarzeniami podczas wykonywania programu, różnią się między sobą. Obsługa sprawdzonych wyjątków jest wymuszana przez kompilator, ale wyjątki środowiska uruchomieniowego nie. Dlatego sprawdzone wyjątki muszą zostać zgłoszone lub obsłużone, aby kod mógł się skompilować, ale nie ma takiego wymogu dotyczącego wyjątków środowiska uruchomieniowego. W związku z tym wyjątki czasu wykonywania należą do kategorii niesprawdzonych wyjątków wraz z błędami.

Wadą zaznaczonych wyjątków jest to, że programista musi sobie z tym poradzić, nawet jeśli nie wie, jak to zrobić. Tak więc, jeśli programista po prostu zgłosi nowy wyjątek bez opakowania oryginalnego, ślad stosu należący do oryginalnego wyjątku zostanie utracony. Tutaj przydają się wyjątki środowiska wykonawczego. Ponieważ wszystkie wyjątki w czasie wykonywania mogą być obsługiwane w jednym miejscu, programiści mogą pisać mniej kodu. Z drugiej strony, ponieważ zaznaczone wyjątki muszą zostać wyłapane, nie ma dla programisty żadnej niespodzianki. Zawsze będzie wiedziała, który sprawdzony wyjątek może zostać zgłoszony przez określoną metodę. W przeciwieństwie do tego, różne wyjątki w czasie wykonywania mogą być zgłaszane bez wiedzy programisty.

Zalecana: