Sprawdzone i niesprawdzone wyjątki w Javie

Sprawdzone i niesprawdzone wyjątki w Javie

W Javie wyjątek to niepożądane lub nieoczekiwane zdarzenie, które ma miejsce podczas wykonywania programu, tj. w czasie wykonywania, i które zakłóca normalny przepływ instrukcji programu.

W Javie istnieją dwa typy wyjątków:

  1. Sprawdzone wyjątki
  2. Niesprawdzone wyjątki

Sprawdzone i niesprawdzone wyjątki Java



Sprawdzone wyjątki w Javie

Te są wyjątkami sprawdzanymi w czasie kompilacji. Jeśli jakiś kod w metodzie zgłasza sprawdzony wyjątek, wówczas metoda musi albo obsłużyć wyjątek, albo musi określić wyjątek za pomocą metody rzuca słowo kluczowe . W sprawdzanych wyjątkach występują dwa typy: w pełni sprawdzone i częściowo sprawdzone wyjątki. W pełni sprawdzony wyjątek to sprawdzony wyjątek, w którym sprawdzane są również wszystkie jego klasy podrzędne, takie jak IOException i InterruptedException. Częściowo sprawdzony wyjątek to sprawdzony wyjątek, w którym niektóre jego klasy podrzędne nie są zaznaczone, jak na przykład wyjątek.

Rozważmy na przykład następujący program Java, który otwiera plik w lokalizacji C: esta.txt i drukuje jego pierwsze trzy wiersze. Program się nie kompiluje, ponieważ funkcja main() używa FileReader(), a FileReader() zgłasza sprawdzony wyjątek Wyjątek FileNotFoundException . Używa także metod readLine() i Close(), które również zgłaszają sprawdzony wyjątek Wyjątek IO

Przykład:

Jawa




// Java Program to Illustrate Checked Exceptions> // Where FileNotFoundException occurred> // Importing I/O classes> import> java.io.*;> // Main class> class> GFG {> > // Main driver method> > public> static> void> main(String[] args)> > {> > // Reading file from path in local directory> > FileReader file => new> FileReader(> 'C: esta.txt'> );> > // Creating object as one of ways of taking input> > BufferedReader fileInput => new> BufferedReader(file);> > // Printing first 3 lines of file 'C: esta.txt'> > for> (> int> counter => 0> ; counter <> 3> ; counter++)> > System.out.println(fileInput.readLine());> > // Closing file connections> > // using close() method> > fileInput.close();> > }> }>

Wyjście:

Dane wyjściowe wyjątku Java Checked

Aby naprawić powyższy program, musimy albo określić listę wyjątków za pomocą rzutów, albo użyć bloku try-catch. W poniższym programie użyliśmy rzutów. Od Wyjątek FileNotFoundException jest podklasą Wyjątek IO , możemy po prostu określić Wyjątek IO na liście rzutów i uczyń powyższy kompilator programu wolnym od błędów.

Przykład:

Jawa




// Java Program to Illustrate Checked Exceptions> // Where FileNotFoundException does not occur> // Importing I/O classes> import> java.io.*;> // Main class> class> GFG {> > // Main driver method> > public> static> void> main(String[] args)> > throws> IOException> > {> > // Creating a file and reading from local repository> > FileReader file => new> FileReader(> 'C: esta.txt'> );> > // Reading content inside a file> > BufferedReader fileInput => new> BufferedReader(file);> > // Printing first 3 lines of file 'C: esta.txt'> > for> (> int> counter => 0> ; counter <> 3> ; counter++)> > System.out.println(fileInput.readLine());> > // Closing all file connections> > // using close() method> > // Good practice to avoid any memory leakage> > fileInput.close();> > }> }>

Wyjście:

First three lines of file 'C:	esta.txt' 

Niesprawdzone wyjątki w Javie

Są to wyjątki, które nie są sprawdzane w czasie kompilacji. W C++ wszystkie wyjątki nie są zaznaczone, więc kompilator nie wymusza obsługi ani określania wyjątku. Od programistów zależy, czy wykażą się cywilizacją i określą lub wyłapią wyjątki. W Javie wyjątki w ramach Błąd I Wyjątek czasu wykonania klasy są niesprawdzonymi wyjątkami, wszystko inne w obszarze rzucania jest sprawdzane.

Rozważmy następujący program Java. Kompiluje się dobrze, ale wyrzuca Wyjątek arytmetyczny kiedy biegniesz. Kompilator pozwala na kompilację, ponieważ Wyjątek arytmetyczny jest niesprawdzonym wyjątkiem.

Przykład:

Jawa




// Java Program to Illustrate Un-checked Exceptions> // Main class> class> GFG {> > // Main driver method> > public> static> void> main(String args[])> > {> > // Here we are dividing by 0> > // which will not be caught at compile time> > // as there is no mistake but caught at runtime> > // because it is mathematically incorrect> > int> x => 0> ;> > int> y => 10> ;> > int> z = y / x;> > }> }>

Wyjście

Exception in thread 'main' java.lang.ArithmeticException: / by zero at Main.main(Main.java:5) Java Result: 1 

Krótko mówiąc, niesprawdzone wyjątki to wyjątki środowiska wykonawczego, których nie trzeba przechwytywać ani deklarować w klauzuli rzutów. Te wyjątki są zwykle spowodowane błędami programistycznymi, takimi jak próba dostępu do indeksu spoza zakresu w tablicy lub próba podzielenia przez zero.

Niesprawdzone wyjątki obejmują wszystkie podklasy klasy RuntimeException, a także klasę Error i jej podklasy.

Oto kilka przykładów niesprawdzonych wyjątków w Javie:

1. Wyjątek ArrayIndexOutOfBounds: Ten wyjątek jest zgłaszany podczas próby dostępu do indeksu tablicy, który jest poza dopuszczalnym zakresem.
2. Wyjątek NullPointer: Ten wyjątek jest zgłaszany podczas próby uzyskania dostępu do odwołania do obiektu o wartości null.
3. Wyjątek arytmetyczny: Ten wyjątek jest zgłaszany w przypadku próby podzielenia przez zero lub wykonania nieprawidłowej operacji arytmetycznej.



Najpopularniejsze Artykuły

Kategoria

Ciekawe Artykuły