Zgłaszanie wyjątku
Część sekcji Logika i przepływ programu ścieżki PHP w Coddy. Lekcja 55 z 68.
Czasami musisz zasygnalizować, że coś poszło nie tak w Twoim kodzie, i zatrzymać normalne wykonywanie programu. Słowo kluczowe throw pozwala ręcznie utworzyć i zgłosić wyjątek, dzięki czemu masz kontrolę nad tym, kiedy i dlaczego Twój program powinien obsłużyć błąd.
Gdy zgłaszasz wyjątek, tworzysz nowy obiekt Exception i przekazujesz mu opisowy komunikat o tym, co poszło nie tak. Ten wyjątek natychmiast zatrzyma wykonywanie bieżącego kodu i wyszuka blok catch, który go obsłuży.
<?php
function checkAge($age) {
if ($age < 0) {
throw new Exception("Age cannot be negative");
}
echo "Age is valid: " . $age;
}
try {
checkAge(-5);
} catch (Exception $e) {
echo "Error: " . $e->getMessage();
}
?>Instrukcja throw wymaga składni new Exception(), w której przekazujesz ciąg znaków opisujący problem. Ten komunikat można później pobrać za pomocą metody getMessage() w bloku catch, co ułatwia zrozumienie, co poszło nie tak, i odpowiednią reakcję.
Wyzwanie
ŁatwyOtrzymasz dwa wejścia: liczbę reprezentującą cenę i liczbę reprezentującą procent zniżki. Oba wejścia będą podane jako liczby (cena może być liczbą dziesiętną, a procent zniżki będzie liczbą całkowitą z zakresu od 0 do 100).
Odczytaj oba wejścia i utwórz funkcję o nazwie calculateFinalPrice, która przyjmuje dwa parametry: cenę i procent zniżki. Wewnątrz tej funkcji sprawdź, czy procent zniżki jest większy niż 100 lub mniejszy niż 0. Jeśli którykolwiek z tych warunków jest spełniony, zgłoś nowy wyjątek Exception z komunikatem "Invalid discount percentage". Jeśli zniżka jest prawidłowa, oblicz cenę końcową po zastosowaniu zniżki i ją zwróć.
Użyj bloku try...catch, aby wywołać funkcję z podanymi wejściami. W bloku try wywołaj funkcję i wypisz "Final price: ", a po nim obliczoną cenę końcową. W bloku catch obsłuż wyjątek, wypisując "Error: ", a po nim komunikat wyjątku za pomocą metody getMessage().
Format wejścia:
- Pierwszy wiersz: liczba reprezentująca cenę (przykład:
100lub49.99) - Drugi wiersz: liczba całkowita reprezentująca procent zniżki (przykład:
20lub150)
Oczekiwany wynik:
- Jeśli zniżka jest prawidłowa:
Final price:, a po nim obliczona cena po zniżce - Jeśli zniżka jest nieprawidłowa:
Error: Invalid discount percentage
Spróbuj swoich sił
<?php
// Wczytaj dane wejściowe
$price = floatval(fgets(STDIN));
$discountPercentage = intval(fgets(STDIN));
// TODO: Napisz swój kod poniżej
// Utwórz funkcję calculateFinalPrice
// Użyj bloku try...catch, aby wywołać funkcję i obsłużyć wyjątki
// Wypisz odpowiedni wynik
?>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