Różnica między wyjątkiem a błędem

Różnica między wyjątkiem a błędem
Różnica między wyjątkiem a błędem

Wideo: Różnica między wyjątkiem a błędem

Wideo: Różnica między wyjątkiem a błędem
Wideo: Introduction to NAT and PAT 2024, Lipiec
Anonim

Wyjątek a błąd

Nieoczekiwane zachowanie może wystąpić podczas działania programu. Może to być spowodowane wyjątkami lub błędami. Wyjątkiem są zdarzenia, które mogą zakłócić normalny przebieg programu. Błędy to stany, które można uznać za nieodwracalne. Wyjątki dotyczą głównie samej aplikacji, natomiast błędy są związane z systemem, na którym działa program.

Co to jest wyjątek?

Wyjątek to zdarzenie, które może 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. Obiekt wyjątku jest tworzony przez metodę, w której wystąpił wyjątek. Obiekt wyjątku zawiera przydatne informacje, takie jak typ i opis wyjątku. 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). Stos wywołań to uporządkowana lista metod, które zostały wywołane przed metodą, w której wystąpił wyjątek. 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 (tj. typ wyjątku pasuje do typu, który może być obsłużony), przekaże obiekt wyjątku do funkcji 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ą po „klasie Throwable”. NullPointerException i ArrayIndexOutOfBoundsException to dwa typowe wyjątki w Javie.

Co to jest błąd?

Błąd to stan, który można uznać za nieodwracalny, na przykład program wymagający większej ilości pamięci niż dostępna. Tych błędów nie można obsłużyć w czasie wykonywania. Jeśli wystąpi błąd, program zostanie zamknięty. W Javie błędy dziedziczą po klasie Throwable. Błędy zwykle oznaczają poważne problemy, których programista (lub aplikacja) nie powinien próbować wyłapać. Błędy to po prostu nienormalne warunki, które nigdy nie wystąpią w normalnych okolicznościach, a zatem nigdy nie są przewidziane. Na przykład OutOfMemoryError, StackOverflowError i ThreadDead są takimi błędami. Metody nigdy nie powinny mieć programów obsługi błędów.

Jaka jest różnica między wyjątkiem a błędem?

Zarówno błędy, jak i wyjątki są niepożądane podczas wykonywania programu. Jednak mają kluczowe różnice. Programista może przewidzieć wyjątki, natomiast błąd jest trudny do przewidzenia. Wyjątki można zaznaczyć lub odznaczyć. Ale błędy są zawsze niezaznaczone. Wyjątki zazwyczaj wskazują na błąd spowodowany przez programistę. Jednak błędy występują z powodu błędu systemu lub niewłaściwego użycia zasobu. Dlatego wyjątki powinny być obsługiwane na poziomie aplikacji, a błędy powinny być rozwiązywane na poziomie systemu (tylko jeśli to możliwe). Po obsłużeniu wyjątku masz gwarancję powrotu do normalnego przebiegu programu. Ale nawet jeśli zostanie wykryty błąd, programista może nie wiedzieć, jak sobie z nim poradzić. W przeciwieństwie do tradycyjnej obsługi błędów, wyjątki umożliwiają oddzielenie kodu obsługi błędów od zwykłego kodu.

Zalecana: