Menu
Coddy logo textTech

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.

challenge icon

Wyzwanie

Łatwy

Otrzymasz 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


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