Wyjątki a code review
Założenie: Pokażemy, jak prawidłowo obsługiwać wyjątki w PHP i dlaczego jest to ważne podczas code review.
Krok po kroku:
- Krok 1: Prosty przykład bez obsługi wyjątków.
$plik = fopen("plik.txt", "r"); if ($plik) { $zawartosc = fread($plik, filesize("plik.txt")); fclose($plik); echo $zawartosc; } else { echo "Błąd otwarcia pliku!"; }
Ten kod nie obsługuje sytuacji, gdy plik “plik.txt” nie istnieje. W takiej sytuacji funkcja `fopen` zwróci `false`, a kod wyświetli jedynie komunikat o błędzie. Brak szczegółowych informacji o błędzie utrudnia debugowanie.
- Krok 2: Obsługa wyjątków za pomocą `try…catch`.
try { $plik = fopen("plik.txt", "r"); if ($plik) { $zawartosc = fread($plik, filesize("plik.txt")); fclose($plik); echo $zawartosc; } else { throw new Exception("Błąd otwarcia pliku!"); } } catch (Exception $e) { echo "Wystąpił błąd: " . $e->getMessage(); }
Teraz, jeśli wystąpi błąd (np. plik nie istnieje), zostanie wyrzucony wyjątek `Exception`, który zostanie przechwycony przez blok `catch`. Dzięki temu otrzymujemy bardziej szczegółowy komunikat o błędzie.
- Krok 3: Bardziej szczegółowa obsługa wyjątków.
try { $plik = fopen("plik.txt", "r"); if (!$plik) { throw new FileNotFoundException("Plik 'plik.txt' nie został znaleziony."); } $zawartosc = fread($plik, filesize("plik.txt")); fclose($plik); echo $zawartosc; } catch (FileNotFoundException $e) { echo "Błąd: " . $e->getMessage() . " Sprawdź ścieżkę do pliku."; } catch (Exception $e) { echo "Wystąpił nieoczekiwany błąd: " . $e->getMessage(); }
W tym przykładzie używamy własnego wyjątków `FileNotFoundException`, co pozwala na bardziej precyzyjną obsługę konkretnych błędów.
Podsumowanie: Ten przykład pokazuje podstawy obsługi wyjątków w PHP. Prawidłowe ich stosowanie jest kluczowe dla tworzenia stabilnego i łatwego w utrzymaniu kodu. Zachęcamy do dalszego zgłębiania tematu i eksperymentowania z różnymi typami wyjątków.