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łócać normalny przebieg programu. Błędy to warunki, które można uznać za niemożliwe do odzyskania. Wyjątki dotyczą głównie samej aplikacji, natomiast błędy dotyczą systemu, w którym działa program.
Co to jest wyjątek??
Wyjątek to zdarzenie, które może zakłócać normalny przebieg programu. Wyjątek od nazwy pochodzi od „wyjątkowego wydarzenia”. Zgłoszenie wyjątku to proces tworzenia obiektu wyjątku i przekazania go do systemu wykonawczego. Obiekt wyjątku tworzony jest metodą, w której wystąpił wyjątek. Obiekt wyjątku zawiera przydatne informacje, takie jak typ i opis wyjątku. Gdy system wykonawczy otrzyma obiekt wyjątku, spróbuje znaleźć kogoś, kto poradzi sobie z nim w stosie wywołań, przechodząc przez niego w odwrotnej kolejności (w której wywołano 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 wykonawczy działa pomyślnie, jeśli znajdzie metodę z obsługą wyjątków. Moduł obsługi 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 odpowiada typowi, który można obsłużyć), przekaże obiekt wyjątku do procedury obsługi. Nazywa się to wyłapywaniem wyjątku. Jeśli jednak wyjątek nie zostanie obsłużony, program zostanie zakończony. W Javie wyjątki dziedziczą po „klasie Throwable”. NullPointerException i ArrayIndexOutOfBoundsException są dwoma powszechnymi wyjątkami w Javie.
Co to jest błąd??
Błąd to stan, który można uznać za niemożliwy do odzyskania, na przykład program wymagający większej ilości pamięci niż dostępna. Błędy te nie mogą być obsługiwane w czasie wykonywania. Jeśli wystąpi błąd, program zostanie zakończony. W Javie błędy dziedziczą po klasie Throwable. Błędy zwykle oznaczają poważne problemy, których programista (lub aplikacja) nie powinien próbować wychwycić. Błędy to po prostu nienormalne warunki, których nie można się spodziewać 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 zawierać 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żądanym wystąpieniem podczas wykonywania programu. Mają jednak kluczowe różnice. Programista może przewidzieć wyjątki, a błąd jest trudny do przewidzenia. Wyjątki można zaznaczyć lub odznaczyć. Ale błędy są zawsze odznaczone. Wyjątki zwykle wskazują na błąd spowodowany przez programistę. Błędy występują jednak z powodu błędu systemu lub niewłaściwego użycia zasobu. Dlatego wyjątki powinny być obsługiwane na poziomie aplikacji, podczas gdy błędy należy rozwiązywać 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 pozwalają na oddzielenie kodu obsługi błędów od zwykłego kodu.