Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: obsługa wyjątków
Forum PHP.pl > Forum > PHP
Fixus
Witam,
chciałbym ogarnąć obsługę wyjątków w php, ale jakoś tego nie czaje.

Załóżmy, że chcę wrzucić w blok try {} funkcję file_get_contents

W przypadku, gdy link nie istnieje powinno zwrócić wyjątek.

Ale kod:

  1. try {
  2. } catch(Exception $ex) { $ex->getMessage(); }


Nic nie zwraca mimo złego url`a

Co źle robię ?
wookieb
1) nic nie wyświetlasz
2) file_get_contents nie zwraca wyjątkó tylko błędy
3) Zamień błedy na wyjątki http://snippets.dzone.com/posts/show/1617
To jest przykład, ale kluczem jest zastosowanie set_error_handler
Crozin
Wyjątki w PHP są o tyle śmieszne, że jeżeli sam ich sobie nie wyrzucisz to właściwie żadna biblioteka wbudowana w język tego nie zrobi. Po prostu w PHP wyjątki nie są zbyt często wykorzystywane. Zdecydowana większość dostępnych funkcji nadal informuje o błędzie w postaci zwrócenia null/false albo wygenerowaniem błędu (error / warning / notice).

Tak więc musiałbyś ten kod przerobić:
  1. try {
  2. if (!file_exists($link)) {
  3. throw ...;
  4. }
  5.  
  6. ...
  7. } catch (...) {
  8. ...
  9. }
Fixus
to pesymistyczne wieści.

A jak najlepiej ustawić set_error_handler ?
wookieb
google -> php convert errors to exceptions
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.