Blok „try...catch”
Część sekcji Logika i przepływ programu ścieżki PHP w Coddy. Lekcja 53 z 68.
Gdy kod PHP napotka problemy, które mogą spowodować jego awarię, potrzebujesz sposobu na łagodne radzenie sobie z takimi sytuacjami. Blok try...catch zapewnia uporządkowany sposób obsługi wyjątków — specjalnych obiektów błędów reprezentujących poważne problemy w kodzie.
Blok try zawiera kod, który może zakończyć się niepowodzeniem lub zgłosić wyjątek. Jeśli wyjątek wystąpi w tym bloku, PHP natychmiast przestaje wykonywać pozostały kod w bloku try i przechodzi do odpowiadającego mu bloku catch. Blok catch obsługuje wyjątek, dzięki czemu skrypt może działać dalej, zamiast ulec awarii.
<?php
try {
// Kod, który może zgłosić wyjątek
$result = riskyFunction();
echo "Success!";
} catch (Exception $e) {
// Obsłuż wyjątek
echo "An error occurred: " . $e->getMessage();
}
?>Blok catch otrzymuje obiekt Exception, który zawiera informacje o tym, co poszło nie tak. Możesz uzyskać dostęp do komunikatu o błędzie za pomocą metody getMessage(). Takie podejście zapobiega zatrzymaniu całego skryptu, gdy coś pójdzie nie tak, dając Ci kontrolę nad obsługą błędów i tym, co widzą użytkownicy.
Wyzwanie
ŁatwyOtrzymasz jedno wejście: liczbę reprezentującą wiek. Wejściem może być liczba ujemna, która jest nieprawidłową wartością wieku.
Odczytaj wejście, przekonwertuj je na liczbę całkowitą i utwórz blok try...catch. Wewnątrz bloku try sprawdź, czy wiek jest ujemny. Jeśli jest ujemny, rzuć nowy wyjątek Exception z komunikatem "Age cannot be negative". Jeśli wiek jest prawidłowy (wynosi zero lub jest dodatni), wypisz "Valid age: ", a następnie wartość wieku.
W bloku catch obsłuż wyjątek, wypisując "Error: ", a następnie komunikat wyjątku za pomocą metody getMessage().
Format wejścia: Jeden wiersz zawierający liczbę całkowitą (na przykład: 25 lub -5)
Oczekiwany wynik:
- Jeśli wiek jest prawidłowy:
Valid age:, a następnie wartość wieku - Jeśli wiek jest ujemny:
Error: Age cannot be negative
Spróbuj swoich sił
<?php
// Odczytaj dane wejściowe
$age = intval(fgets(STDIN));
// TODO: Napisz swój kod poniżej
// Utwórz blok try...catch, aby sprawdzić poprawność wieku
?>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