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.
Wyzwanie
ŁatwyOtrzymasz 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ątekExceptionz 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, albomultiply) - Drugi wiersz: liczba (na przykład:
5,0lub2.5)
Oczekiwany wynik:
- Jeśli operacja się powiedzie:
Result:, a następnie obliczona wartość, po czymOperation completedw nowym wierszu - Jeśli wystąpi dzielenie przez zero:
Error: Cannot divide by zero, a następnieOperation completedw 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
?>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
1Zaawansowane funkcje
Funkcje anonimoweDomknięcia i „use”Funkcje strzałkoweFunkcje zwrotneUżywanie „call_user_func”Funkcje zmiennePrzekazywanie przez referencjęFunkcje rekurencyjnePowtórka: przegląd funkcji4Tablice wielowymiarowe
Tworzenie tablicy 2DDostęp do elementów tablicy 2DModyfikowanie elementów tablicy 2DIterowanie z użyciem zagnieżdżonych pętliAsocjacyjne tablice 2DPodsumowanie: ćwiczenie z prostą siatką2Zaawansowane operacje na tablicach
Dodawanie za pomocą 'array_push'Usuwanie za pomocą 'array_pop'Dodawanie za pomocą 'array_unshift'Usuwanie za pomocą 'array_shift'Łączenie tablic indeksowanychŁączenie tablic asocjacyjnychWyodrębnianie za pomocą 'array_slice'Wyszukiwanie wartości za pomocą 'in_array'Wyszukiwanie kluczy za pomocą 'array_search'Podsumowanie: ćwiczenie z playlistą5Dziennik ocen uczniów
Konfiguracja projektu: struktura danychDodawanie nowego uczniaDodawanie oceny uczniowiObliczanie średniej uczniaWyszukiwanie ucznia z najwyższą ocenąGenerowanie świadectwa8Obsługa błędów i wyjątków
Poznawanie błędów PHPBlok „try...catch”Blok „finally”Zgłaszanie wyjątkuTworzenie własnego wyjątkuKorzystanie z własnego wyjątkuPodsumowanie: walidacja danych wejściowych3Sortowanie tablic
Sortowanie tablic indeksowanych rosnącoSortowanie tablic indeksowanych malejącoSortowanie tablic asocjacyjnych według wartościSortowanie tablic asocjacyjnych według kluczaSortowanie w kolejności naturalnejSortowanie niestandardowe za pomocą 'usort'Podsumowanie: sortowanie tabeli wynikówPoćwicz samodzielnie: Kompilator PHP online