W tutorialu dowiemy się na przykładach o różnych podejściach do obsługi wyjątków w Javie.
W ostatnim samouczku dowiedzieliśmy się o wyjątkach Java. Wiemy, że wyjątki anormalnie przerywają wykonywanie programu.
Dlatego ważne jest, aby obsługiwać wyjątki. Oto lista różnych podejść do obsługi wyjątków w Javie.
- spróbuj… złapać blok
- w końcu blok
- throw and throws słowo kluczowe
1. Blokada Java try… catch
Blok try-catch służy do obsługi wyjątków w Javie. Oto składnia try… catch
bloku:
try ( // code ) catch(Exception e) ( // code )
Tutaj umieściliśmy kod, który może generować wyjątek wewnątrz try
bloku. Po każdym try
bloku następuje catch
blok.
Gdy wystąpi wyjątek, zostaje przechwycony przez catch
blok. catch
Blok nie mogą być wykorzystywane bez try
bloku.
Przykład: obsługa wyjątków za pomocą try… catch
class Main ( public static void main(String() args) ( try ( // code that generate exception int divideByZero = 5 / 0; System.out.println("Rest of code in try block"); ) catch (ArithmeticException e) ( System.out.println("ArithmeticException => " + e.getMessage()); ) ) )
Wynik
ArithmeticException => / o zero
W tym przykładzie próbujemy podzielić liczbę przez 0
. Tutaj ten kod generuje wyjątek.
Aby obsłużyć wyjątek, umieściliśmy kod 5 / 0
wewnątrz try
bloku. Teraz, gdy wystąpi wyjątek, reszta kodu wewnątrz try
bloku jest pomijana.
catch
Blok łapie wyjątek i oświadczenia wewnątrz bloku catch jest wykonywany.
Jeśli żadna z instrukcji w try
bloku nie generuje wyjątku, catch
blok jest pomijany.
2. Java ostatecznie blokuje
W Javie finally
blok jest zawsze wykonywany bez względu na to, czy istnieje wyjątek, czy nie.
finally
Blok jest opcjonalny. Dla każdego try
bloku może istnieć tylko jeden finally
blok.
Podstawowa składnia finally
bloku to:
try ( //code ) catch (ExceptionType1 e1) ( // catch block ) finally ( // finally block always executes )
Jeśli wystąpi wyjątek, finally
blok jest wykonywany po try… catch
bloku. W przeciwnym razie jest wykonywane po bloku try. Dla każdego try
bloku może istnieć tylko jeden finally
blok.
Przykład: obsługa wyjątków Java przy użyciu funkcji last block
class Main ( public static void main(String() args) ( try ( // code that generates exception int divideByZero = 5 / 0; ) catch (ArithmeticException e) ( System.out.println("ArithmeticException => " + e.getMessage()); ) finally ( System.out.println("This is the finally block"); ) ) )
Wynik
ArithmeticException => / by zero To jest ostatni blok
W powyższym przykładzie dzielimy liczbę przez 0 wewnątrz try
bloku. Tutaj ten kod generuje plik ArithmeticException
.
Wyjątek jest przechwytywany przez catch
blok. Następnie finally
blok jest wykonywany.
Uwaga : dobrą praktyką jest używanie finally
bloku. Dzieje się tak, ponieważ może zawierać ważne kody porządkowe, takie jak:
- kod, który może zostać przypadkowo pominięty przez powrót, kontynuację lub przerwanie
- zamknięcie pliku lub połączenia
3. Słowo kluczowe w języku Java throw and throws
Słowo throw
kluczowe Java służy do jawnego zgłaszania pojedynczego wyjątku.
Kiedy robimy throw
wyjątek, przepływ programu przenosi się z try
bloku do catch
bloku.
Przykład: obsługa wyjątków za pomocą rzutowania w języku Java
class Main ( public static void divideByZero() ( // throw an exception throw new ArithmeticException("Trying to divide by 0"); ) public static void main(String() args) ( divideByZero(); ) )
Wynik
Wyjątek w wątku „main” java.lang.ArithmeticException: Próba podzielenia przez 0 w Main.divideByZero (Main.java:5) w Main.main (Main.java:9)
W powyższym przykładzie jawnie wyrzucamy ArithmeticException
using throw
słowo kluczowe.
Podobnie throws
słowo kluczowe służy do deklarowania typu wyjątków, które mogą wystąpić w metodzie. Jest używany w deklaracji metody.
Przykład: Java rzuca słowo kluczowe
import java.io.*; class Main ( // declareing the type of exception public static void findFile() throws IOException ( // code that may generate IOException File newFile = new File("test.txt"); FileInputStream stream = new FileInputStream(newFile); ) public static void main(String() args) ( try ( findFile(); ) catch (IOException e) ( System.out.println(e); ) ) )
Wynik
java.io.FileNotFoundException: test.txt (system nie może znaleźć określonego pliku)
Gdy uruchamiamy ten program, jeśli plik test.txt nie istnieje, FileInputStream
wyrzuca a, FileNotFoundException
który rozszerza IOException
klasę.
findFile()
Metoda określa, że IOException
może zostać wyrzucony. main()
Metoda nazywa tę metodę i obsługuje wyjątek jeśli jest wyrzucane.
Jeśli metoda nie obsługuje wyjątków, typ wyjątków, które mogą w niej wystąpić, należy określić w throws
klauzuli.
Aby dowiedzieć się więcej, odwiedź stronę Java throw and throws.