logo

Typy wyjątków w Javie

na Jawie, wyjątek to zdarzenie, które ma miejsce podczas wykonywania programu i zakłóca normalny przepływ instrukcji programu. Błędy, których nie chcemy i które ograniczają normalne wykonywanie kodu naszego programu, nazywane są wyjątki . W tej części skupimy się na typy wyjątków w Javie i różnice między nimi.

Wyjątki można podzielić na dwa sposoby:

  1. Wbudowane wyjątki
    • Sprawdzony wyjątek
    • Niesprawdzony wyjątek
  2. Wyjątki zdefiniowane przez użytkownika
Typy wyjątków w Javie

Wbudowany wyjątek

Wyjątki które są już dostępne w Biblioteki Javy nazywane są wbudowany wyjątek . Te wyjątki są w stanie zdefiniować sytuację błędu, dzięki czemu możemy zrozumieć przyczynę otrzymania tego błędu. Można je podzielić na dwie szerokie kategorie, tj. sprawdzone wyjątki I niesprawdzony wyjątek .

Sprawdzony wyjątek

Sprawdzony nazywane są wyjątki czas kompilacji wyjątki, ponieważ te wyjątki są sprawdzane przez kompilator w czasie kompilacji. Kompilator sprawdza, czy programista obsłuży wyjątek, czy nie. Programista powinien obsłużyć wyjątek; w przeciwnym razie system pokazał błąd kompilacji.

CheckedExceptionExample.java

funkcja statyczna w Javie
 import java.io.*; class CheckedExceptionExample { public static void main(String args[]) { FileInputStream file_data = null; file_data = new FileInputStream('C:/Users/ajeet/OneDrive/Desktop/Hello.txt'); int m; while(( m = file_data.read() ) != -1) { System.out.print((char)m); } file_data.close(); } } 

W powyższym kodzie próbujemy odczytać plik Witam.txt pliku i wyświetlić jego dane lub zawartość na ekranie. Program zgłasza następujące wyjątki:

  1. The FileInputStream(nazwa pliku) konstruktor rzuca Wyjątek FileNotFoundException to jest sprawdzony wyjątek.
  2. The Czytać() metoda Strumień wejściowy pliku klasa rzuca Wyjątek IO .
  3. The zamknąć() metoda zgłasza również wyjątek IOException.

Wyjście:

Typy wyjątków w Javie

Jak rozwiązać błąd?

Istnieją zasadniczo dwa sposoby rozwiązania tych błędów.

1) Wyjątki występują w metodzie głównej. Możemy pozbyć się tych błędów kompilacji, deklarując wyjątek w metodzie głównej using rzuty Deklarujemy tylko wyjątek IOException, a nie FileNotFoundException, ze względu na relację dziecko-rodzic. Klasa IOException jest klasą nadrzędną wyjątku FileNotFoundException, zatem ten wyjątek zostanie automatycznie uwzględniony w wyjątku IOException. Zadeklarujemy wyjątek w następujący sposób:

 class Exception{ public static void main(String args[]) throws IOException { ... ... } 

Jeśli skompilujemy i uruchomimy kod, błędy znikną, a my zobaczymy dane pliku.

polecenie w węźle js
Typy wyjątków w Javie

2) Możemy również obsłużyć te wyjątki za pomocą próbuj złapać Jednakże sposób, który zastosowaliśmy powyżej, nie jest prawidłowy. Musimy przekazać znaczący komunikat dla każdego typu wyjątku. Dzięki temu łatwiej będzie zrozumieć błąd. Bloku try-catch użyjemy w następujący sposób:

Wyjątek.java

 import java.io.*; class Exception{ public static void main(String args[]) { FileInputStream file_data = null; try{ file_data = new FileInputStream('C:/Users/ajeet/OneDrive/Desktop/programs/Hell.txt'); }catch(FileNotFoundException fnfe){ System.out.println('File Not Found!'); } int m; try{ while(( m = file_data.read() ) != -1) { System.out.print((char)m); } file_data.close(); }catch(IOException ioe){ System.out.println('I/O error occurred: '+ioe); } } } 

Zobaczymy odpowiedni komunikat o błędzie 'Nie znaleziono pliku!' na konsoli, ponieważ w tej lokalizacji nie ma takiego pliku.

co oznacza Google
Typy wyjątków w Javie

Niesprawdzone wyjątki

The niepowstrzymany wyjątki są dokładnie odwrotne do sprawdzony wyjątki. Kompilator nie będzie sprawdzał tych wyjątków w czasie kompilacji. Krótko mówiąc, jeśli program zgłosi niesprawdzony wyjątek, a nawet jeśli go nie obsłużymy lub nie zadeklarujemy, program nie zwróci błędu kompilacji. Zwykle ma to miejsce, gdy użytkownik podczas interakcji z programem podaje błędne dane.

Uwaga: Klasa RuntimeException jest w stanie rozwiązać wszystkie niesprawdzone wyjątki ze względu na relację dziecko-rodzic.

UncheckedExceptionExample1.java

 class UncheckedExceptionExample1 { public static void main(String args[]) { int postive = 35; int zero = 0; int result = positive/zero; //Give Unchecked Exception here. System.out.println(result); } } 

W powyższym programie podzieliliśmy 35 przez 0. Kod zostałby pomyślnie skompilowany, ale w czasie wykonywania zgłosi błąd ArithmeticException. Dzieląc liczbę przez 0, zgłaszany jest wyjątek dotyczący dzielenia przez zero, który polega na odznaczeniu wyjątku.

waga kat timpf

Wyjście:

Typy wyjątków w Javie

Niezaznaczony wyjątek1.java

 class UncheckedException1 { public static void main(String args[]) { int num[] ={10,20,30,40,50,60}; System.out.println(num[7]); } } 

Wyjście:

Typy wyjątków w Javie

W powyższym kodzie próbujemy umieścić element na pozycji 7, ale długość tablicy wynosi 6. Kod kompiluje się pomyślnie, ale w czasie wykonywania zgłasza wyjątek ArrayIndexOutOfBoundsException.

Wyjątek zdefiniowany przez użytkownika

W Jawa , mamy już kilka wbudowanych klas wyjątków, takich jak ArrayIndexOutOfBoundsException , NullPointerException , I Wyjątek arytmetyczny . Wyjątki te mogą być uruchamiane tylko w przypadku niektórych wcześniej zdefiniowanych warunków. W Javie możemy napisać własną klasę wyjątków, rozszerzając klasę wyjątków. Możemy zgłosić własny wyjątek dla określonego warunku za pomocą słowa kluczowego rzut. Aby utworzyć wyjątek zdefiniowany przez użytkownika, powinniśmy posiadać podstawową wiedzę nt the próbuj złapać blokować i rzucić słowo kluczowe .

Napiszmy A Program Java i utwórz wyjątek zdefiniowany przez użytkownika.

wiosenny mvc

UserDefinedException.java

 import java.util.*; class UserDefinedException{ public static void main(String args[]){ try{ throw new NewException(5); } catch(NewException ex){ System.out.println(ex) ; } } } class NewException extends Exception{ int x; NewException(int y) { x=y; } public String toString(){ return ('Exception value = '+x) ; } } 

Wyjście:

Typy wyjątków w Javie

Opis:

W powyższym kodzie utworzyliśmy dwie klasy, tj. Wyjątek zdefiniowany przez użytkownika I Nowy wyjątek . The Wyjątek zdefiniowany przez użytkownika ma naszą główną metodę i Nowy wyjątek class to nasza zdefiniowana przez użytkownika klasa wyjątków, która rozszerza wyjątek . w Nowy wyjątek klasę, tworzymy zmienną X typu integer i przypisz mu wartość w konstruktorze. Po przypisaniu wartości tej zmiennej zwracamy komunikat o wyjątku.

w Wyjątek zdefiniowany przez użytkownika klasy, dodaliśmy a próbuj złapać blok. W sekcji try zgłaszamy wyjątek, tj. Nowy wyjątek i przekazać do niego liczbę całkowitą. Wartość zostanie przekazana do klasy NewException i zwróci komunikat. Przechwytujemy tę wiadomość w bloku catch i wyświetlamy ją na ekranie.

Różnica między zaznaczonym i niesprawdzonym wyjątkiem

Tak nie Sprawdzony wyjątek Niesprawdzony wyjątek
1. Te wyjątki są sprawdzane w czasie kompilacji. Te wyjątki są obsługiwane również w czasie kompilacji. Te wyjątki są przeciwieństwem sprawdzonych wyjątków. Te wyjątki nie są sprawdzane i obsługiwane w czasie kompilacji.
2. Te wyjątki są bezpośrednimi podklasami wyjątków, ale nie są rozszerzonymi z klasy RuntimeException. Są to bezpośrednie podklasy klasy RuntimeException.
3. Kod daje błąd kompilacji w przypadku, gdy metoda zgłasza sprawdzony wyjątek. Kompilator nie jest w stanie samodzielnie obsłużyć wyjątku. Kod kompiluje się bez żadnych błędów, ponieważ wyjątki umykają uwadze kompilatora. Te wyjątki są wynikiem błędów stworzonych przez użytkownika w logice programowania.
4. Wyjątki te występują najczęściej, gdy prawdopodobieństwo awarii jest zbyt wysokie. Wyjątki te występują głównie z powodu błędów programistycznych.
5. Często sprawdzane wyjątki obejmują wyjątek IOException, DataAccessException, InterruptedException itp. Typowe niesprawdzone wyjątki obejmują wyjątek ArithmeticException, InvalidClassException, NullPointerException itp.
6. Te wyjątki są propagowane przy użyciu rzucanego słowa kluczowego. Są one propagowane automatycznie.
7. Aby obsłużyć sprawdzony wyjątek, wymagane jest podanie bloków try-catch i try-finally. W przypadku niesprawdzonego wyjątku nie jest to obowiązkowe.

Błędy, których nie chcemy i które ograniczają normalne wykonywanie programów, nazywane są błędami wyjątki .

ArithmeticException, ArrayIndexOutOfBoundExceptions, ClassNotFoundExceptions itp. należą do kategorii Wbudowany wyjątek . Czasami wbudowane wyjątki nie są wystarczające do wyjaśnienia lub opisania pewnych sytuacji. Aby opisać takie sytuacje, musimy stworzyć własne wyjątki, tworząc klasę wyjątków jako podklasę klasy Wyjątek klasa. Tego typu wyjątki należą do kategorii Wyjątek zdefiniowany przez użytkownika .