Menu
Coddy logo textTech

Blok finally

Część sekcji Logika i przepływ sterowania ścieżki Java w Coddy. Lekcja 41 z 59.

Blok finally zawiera kod, który zostanie wykonany po blokach try-catch, niezależnie od tego, czy wystąpi wyjątek. Jest powszechnie używany do operacji porządkowych, takich jak zamykanie plików lub połączeń z bazą danych.

Oto podstawowa struktura bloku try-catch-finally:

try {
   // Kod, który może zgłosić wyjątek
} catch (ExceptionType e) {
   // Kod obsługujący wyjątek
} finally {
   // Kod, który zawsze się wykonuje
}

Zobaczmy przykład z licznikiem:

int counter = 0;
try {
   int result = 10 / 0;
   // To spowoduje zgłoszenie wyjątku
   counter = 1;
} catch (ArithmeticException e) {
   counter = 2;
} finally {
   counter = 3;
   // To wykona się zawsze
}

Po wykonaniu powyższego kodu zmienna counter zawiera:

3

Typ w nawiasach catch decyduje o tym, które błędy obsługuje ten blok. Dwa częste typy to ArithmeticException, zgłaszany przy dzieleniu liczby całkowitej przez zero, oraz NumberFormatException, zgłaszany przez Integer.parseInt(), gdy tekst nie jest liczbą. Pojedynczy blok catch może jednocześnie obsługiwać kilka typów:

try {
   int value = Integer.parseInt(text);
   int result = 10 / value;
} catch (ArithmeticException | NumberFormatException e) {
   // obsługuje oba wyjątki
} finally {
   // wykonuje się zawsze
}

Przechwytywanie zamiast tego Exception jest szersze: obsługuje oba te wyjątki i każdy inny wyjątek.

challenge icon

Wyzwanie

Łatwy

Utwórz metodę o nazwie processNumber, która przyjmuje dwa argumenty:

  1. String (number) do przekonwertowania na liczbę całkowitą
  2. boolean (shouldThrow), który określa, czy należy zgłosić wyjątek

Metoda powinna:

  1. Zainicjalizować zmienną result wartością 0
  2. W bloku try:
    • Jeśli shouldThrow ma wartość true, podzielić 10 przez 0
    • W przeciwnym razie przekonwertować ciąg number na liczbę całkowitą i zapisać ją w result
  3. W bloku catch: ustawić result na -1
  4. W bloku finally: dodać 100 do result
  5. Zwrócić result jako ciąg znaków

Spróbuj swoich sił

import java.util.Scanner;

public class Main {
    public static String processNumber(String number, boolean shouldThrow) {
        // Wpisz tutaj swój kod
    }
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String number = scanner.nextLine();
        boolean shouldThrow = Boolean.parseBoolean(scanner.nextLine());
        
        System.out.println(processNumber(number, shouldThrow));
    }
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ sterowania

Poćwicz samodzielnie: Kompilator Java online