Menu
Coddy logo textTech

Blok „finally”

Część sekcji Logika i przepływ programu ścieżki PHP w Coddy. Lekcja 54 z 68.

Czasami potrzebujesz kodu, który działa niezależnie od tego, czy wystąpi wyjątek. Blok finally zapewnia taką gwarancję — zawiera kod, który wykona się zawsze po zakończeniu bloku try...catch, dzięki czemu doskonale nadaje się do operacji porządkowych, takich jak zamykanie plików lub połączeń z bazą danych.

Blok finally jest wykonywany w każdym przypadku: gdy blok try zakończy się powodzeniem bez wyjątków, gdy wyjątek zostanie zgłoszony i przechwycony, a nawet gdy wyjątek zostanie zgłoszony, ale nie zostanie przechwycony. Ta niezawodność sprawia, że jest nieoceniony przy zapewnianiu, że ważny kod sprzątający zawsze zostanie wykonany.

<?php
try {
    echo "Attempting operation...\n";
    // Kod, który może zgłosić wyjątek
} catch (Exception $e) {
    echo "Error: " . $e->getMessage() . "\n";
} finally {
    echo "Cleanup completed.\n";
}
?>

Blok finally wykonuje się po zakończeniu zarówno bloków try, jak i catch, zapewniając stałe miejsce na niezbędny kod porządkowy. Dzięki temu skrypt prawidłowo obsługuje zasoby i utrzymuje czysty stan niezależnie od tego, co wydarzy się podczas wykonywania.

challenge icon

Wyzwanie

Łatwy

Otrzymasz dwa wejścia: typ operacji i liczbę. Pierwsze wejście to ciąg znaków, który będzie równy "divide" lub "multiply". Drugie wejście to liczba, która zostanie użyta w operacji.

Wczytaj oba wejścia i utwórz blok try...catch...finally. Wewnątrz bloku try sprawdź typ operacji:

  • Jeśli operacją jest "divide", sprawdź, czy liczba wynosi zero. Jeśli tak, zgłoś nowy wyjątek Exception z komunikatem "Cannot divide by zero". Jeśli liczba nie wynosi zero, oblicz 100 podzielone przez tę liczbę i wypisz "Result: ", a następnie wynik.
  • Jeśli operacją jest "multiply", oblicz 100 pomnożone przez tę liczbę i wypisz "Result: ", a następnie wynik.

W bloku catch obsłuż każdy wyjątek, wypisując "Error: ", a następnie komunikat wyjątku za pomocą metody getMessage().

W bloku finally wypisz "Operation completed".

Format wejścia:

  • Pierwszy wiersz: ciąg znaków określający typ operacji (albo divide, albo multiply)
  • Drugi wiersz: liczba (na przykład: 5, 0 lub 2.5)

Oczekiwany wynik:

  • Jeśli operacja się powiedzie: Result: , a następnie obliczona wartość, po czym Operation completed w nowym wierszu
  • Jeśli wystąpi dzielenie przez zero: Error: Cannot divide by zero, a następnie Operation completed w nowym wierszu

Spróbuj swoich sił

<?php
// Wczytaj dane wejściowe
$operation = trim(fgets(STDIN));
$number = floatval(fgets(STDIN));

// TODO: Napisz swój kod poniżej
// Utwórz blok try...catch...finally do obsługi operacji

?>
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 programu

Poćwicz samodzielnie: Kompilator PHP online