Obsługa wyjątków Java (z przykładami)

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… catchbloku:

 try ( // code ) catch(Exception e) ( // code )

Tutaj umieściliśmy kod, który może generować wyjątek wewnątrz trybloku. Po każdym trybloku następuje catchblok.

Gdy wystąpi wyjątek, zostaje przechwycony przez catchblok. catchBlok nie mogą być wykorzystywane bez trybloku.

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 / 0wewnątrz trybloku. Teraz, gdy wystąpi wyjątek, reszta kodu wewnątrz trybloku jest pomijana.

catchBlok łapie wyjątek i oświadczenia wewnątrz bloku catch jest wykonywany.

Jeśli żadna z instrukcji w trybloku nie generuje wyjątku, catchblok jest pomijany.

2. Java ostatecznie blokuje

W Javie finallyblok jest zawsze wykonywany bez względu na to, czy istnieje wyjątek, czy nie.

finallyBlok jest opcjonalny. Dla każdego trybloku może istnieć tylko jeden finallyblok.

Podstawowa składnia finallybloku to:

 try ( //code ) catch (ExceptionType1 e1) ( // catch block ) finally ( // finally block always executes )

Jeśli wystąpi wyjątek, finallyblok jest wykonywany po try… catchbloku. W przeciwnym razie jest wykonywane po bloku try. Dla każdego trybloku może istnieć tylko jeden finallyblok.

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 trybloku. Tutaj ten kod generuje plik ArithmeticException.

Wyjątek jest przechwytywany przez catchblok. Następnie finallyblok jest wykonywany.

Uwaga : dobrą praktyką jest używanie finallybloku. 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 throwkluczowe Java służy do jawnego zgłaszania pojedynczego wyjątku.

Kiedy robimy throwwyjątek, przepływ programu przenosi się z trybloku do catchbloku.

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 ArithmeticExceptionusing throwsłowo kluczowe.

Podobnie throwssł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, FileInputStreamwyrzuca a, FileNotFoundExceptionktóry rozszerza IOExceptionklasę.

findFile()Metoda określa, że IOExceptionmoż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 throwsklauzuli.

Aby dowiedzieć się więcej, odwiedź stronę Java throw and throws.

Interesujące artykuły...