Obsługa wyjątków Java

Obsługa wyjątków Java
Gdy normalny przepływ wykonania programu przerywa dla dowolnego błędu, nazywa się to wyjątkiem. Tego rodzaju zdarzenie można obsłużyć za pomocą za pomocą próba-przyłapana na leczeniu blok. Wyjątkiem jest obiekt używany do złapania błędu i uruchomienia instrukcji na podstawie warunku błędu, który nazywa się obsługą wyjątków. Głównie dwa typy błędów są obsługiwane przez obsługę wyjątków. To są skompilowany czas błędy i czas wykonywania błędy. czas wykonywania Błędy są obsługiwane przez obsługę wyjątków. Jak poradzić sobie z wyjątkami w Javie, jest wyjaśnione w tym samouczku.

Składnia:

Składnia próba-chwytanie blok jest podany poniżej.

próbować
Oświadczenie 1… n

catch (wyjątekTType var)
Oświadczenie 1… n

Wreszcie
Oświadczenie 1… n

Tutaj, jeśli wyjątek wystąpi w bloku próbnym, wówczas wyjątek zostanie wyrzucony do bloku połowowego, a blok wreszcie jest opcjonalny tutaj. Kod bloku ostatecznie wykonuje, czy występuje wyjątek, czy nie.

Przykład-1: Obsługa wyjątków za pomocą jednego bloku połowowego

Poniższy przykład pokazuje użycie obsługi wyjątków za pomocą jednego bloku połowowego. Nazwa pliku zostanie uznana za wejście i utworzyć obiekt bufferedReader, aby otworzyć plik do odczytu. Jeśli nazwa pliku istnieje, zawartość pliku będzie odczytana według wiersza i wydrukowana. Jeśli plik nie istnieje, zostanie wygenerowany wyjątek, a komunikat o błędzie zostanie wydrukowany.

Importuj Java.io.BufferedReader;
Importuj Java.io.FileReader;
Importuj Java.io.IoException;
Importuj Java.Util.Skaner;
klasa publiczna z wyjątkiem 1
public static void main (string [] args)
// Utwórz obiekt skanera
Skaner w = nowy skaner (system.W);
System.na zewnątrz.drukuj („Wprowadź nazwę pliku:”);
// weź dane stringowe od użytkownika
String filename = in.Następny();
próbować
// Utwórz obiekt czytnika
BufferedReader Reader = new BufferedReader (nowy FileReader (nazwa pliku));
// Przeczytaj pierwszy wiersz, jeśli plik istnieje
Linia ciągów = czytnik.Czytaj linię();
When (linia != null)
// Wydrukuj linię
System.na zewnątrz.println (linia);
// Przeczytaj następny wiersz
linia = czytnik.Czytaj linię();

// Zamknij obiekt czytnika
czytelnik.zamknąć();
// Zamknij obiekt skanera
W.zamknąć();
catch (ioException e)
// Wydrukuj komunikat o błędzie
System.na zewnątrz.println („plik nie istnieje”);


Wyjście:

W następnym wyjściu, 'Witam.tekst' jest podawany jako nazwa pliku, która nie istnieje. Więc wydrukowana jest następująca wiadomość.

Następnym razem, plik 1.tekst jest podana jako nazwa pliku, a wyjście pokazuje zawartość pliku.

Przykład-2: Obsługa wyjątków z wielokrotnym blokiem połowowym

Jak możesz użyć wielu bloków połowowych, aby obsłużyć wiele wyjątków, pokazano w poniższym przykładzie. Tutaj zadeklarowane są trzy bloki połowowe. Pierwszy blok połowowy złapie błąd arytmetyczny, gdy wykonana jest jakakolwiek nielogiczna operacja arytmetyczna. Drugi połów Bock złapie błąd poza zakresem tablicy, gdy wartość indeksu tablicy będzie próbowana odczytanie, który nie istnieje. Trzeci blok połowowy złapie błąd wartości liczbowej, gdy dowolna wartość znaku lub warstwy zostanie podana jako wartość tablicy. W kodzie tablica z czterema indeksami jest zadeklarowana i inicjowana z wartościami liczb całkowitych, które zostaną pobrane od użytkownika. Wartości tablicy są drukowane za pomocą pętli. Operacja oddziału odbywa się na końcu bloku próbnego.

Importuj Java.Util.Skaner;
klasa publiczna z wyjątkiem2
public static void main (string [] args)

próbować

// zadeklaruj tablicę numeryczną
int num_arr [] = new int [4];
// Utwórz obiekt skanera
Skaner w = nowy skaner (system.W);
System.na zewnątrz.println („Wprowadź cztery liczby:”);
// iteruj pętlę cztery razy
dla (int i = 0; i < 4; i++)
// Numer wejściowy
int n = in.NextIt ();
// przypisz wartość do tablicy
num_arr [i] = n;

System.na zewnątrz.println („Wartości macierzy to:”);
// iteruj pętlę pięć razy
dla (int i = 0; i < 4; i++)
// Wydrukuj wartości tablicy
System.na zewnątrz.println (num_arr [i]);

// Podziel i wydrukuj wartość
int num = 50/0;
System.na zewnątrz.druk (num);
// Zamknij obiekt skanera
W.zamknąć();

Catch (arytmeticexception e)

System.na zewnątrz.println („Żadna liczba nie jest podzielna przez 0”);

Catch (ArrayIndexoutofboundSexception e)

System.na zewnątrz.println („Wystąpiła wartość indeksu z tablicy”);

Catch (wyjątek e)

System.na zewnątrz.println („Wartość liczby nie jest podana”);


Wyjście:

Poniższe dane wyjściowe pokazuje, że wartości tablicy są prawidłowo wstawiane i drukowane, ale trzeci blok połowowy jest wykonywany, ponieważ 50 jest podzielony przez 0, co jest błędem.

Program jest wykonywany po raz drugi. Gdy wartość ciągu jest podana jako wartość tablicy, wówczas generowany jest drugi wyjątek, a instrukcja drugiego bloku połowowego jest wykonywana.

Przykład-3: Obsługa wyjątków z blokiem próbkowanym

Zastosowanie w końcu bloku z blokiem próbkowym jest pokazane w poniższym przykładzie. Kod bloku ostatecznie wykonuje się, jeśli wystąpi wyjątek, czy nie. W kodzie wartość liczb całkowita zostanie pobrana od użytkownika. Jeśli użytkownik podaje jakąkolwiek wartość ciągu, to InputMismatchException

wygeneruje i wydrukuje wiadomość z bloku połowowego. Obiekt skanera zostanie zamknięty w Wreszcie blokuj, jeśli wyjątek generuje lub nie.

Importuj Java.Util.Skaner;
Importuj Java.Util.InputMismatchException;
klasa publiczna z wyjątkiem3
public static void main (string [] args)
// Utwórz obiekt skanera
Skaner w = nowy skaner (system.W);
System.na zewnątrz.drukuj („wprowadź numer:”);
próbować
// weź dane stringowe od użytkownika
liczba int = w.NextIt ();
// Wydrukuj numer
System.na zewnątrz.println („Wartość liczby =” + numer);
catch (inputMismatchException e)
// Wydrukuj komunikat o błędzie
System.na zewnątrz.println („Wartość ciągu nie jest akceptowana.");

Wreszcie
// Zamknij obiekt skanera
W.zamknąć();
System.na zewnątrz.println („zakończony z programu”);


Wyjście:

78 jest podana jako wartość wejściowa w następującym wyjściu po wykonaniu kodu. Tak więc tutaj nie generuje żaden wyjątek. Wiadomość z bloku ostatecznie jest wydrukowana później.

Następny, Witam jest podany jako wejście po wykonaniu kodu, który jest ciągiem. Wyjątek jest wygenerowany, a komunikat o błędzie z bloku połowowego jest drukowany. Wiadomość z bloku ostatecznie jest wydrukowana później.

Wniosek:

Obsługa wyjątków jest bardzo ważną i przydatną funkcją każdego języka programowania, którego można użyć do ukrycia prawdziwego komunikatu o błędzie od użytkownika i zapewnienia komunikatu o błędzie czytelniczym przez użytkownika, aby poprawnie zrozumieć błąd. Ten samouczek pomaga użytkownikowi nauczyć się różnych sposobów stosowania obsługi wyjątków w Javie i uczynić ich kod bardziej odpowiedni.