logo

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.

jak wydrukować Java

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

pseudokod Java




// 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;> >}> }>

>

dynamiczna tablica w Javie

>

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.