Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] przerywanie wykonywania przy błędzie
Forum PHP.pl > Forum > Przedszkole
vanvar
Witam serdecznie;
Mam pytanie, czy jest możliwe przerwanie wykonywania skryptu jeśli pojawi się error
Kod
Notice:
? Jeśli tak - w jaki sposób?
rasgan
poprzez zastosowanie wyjątków pewnie się da. Poczytaj w manualu o TRY i CATCH
nospor
oj tam... zaraz wyjatki....
  1. <?php
  2. function myErrorHandler($errno, $errstr, $errfile, $errline)
  3. {
  4. switch ($errno) {
  5.  
  6. case E_NOTICE:
  7. echo "Pojawil sie notice, spadam";exit();
  8. break;
  9.  
  10. }
  11.  
  12. return true;
  13. }
  14.  
  15. // set to the user defined error handler
  16. set_error_handler("myErrorHandler");
  17.  
  18. echo 'jesli chcesz przerwac, odkomentuj linie ponizej';
  19. //echo $zm;
  20.  
  21. echo '<br />widze nie odkomentowales :)';
  22. ?>
smile.gif
Cysiaczek
bez jaj - exit(), die(), throw new Exception(). Manual się kłania
Pozdrawiam.
vanvar
Mam jeszcze pytanie do kodu nospora.

Generalnie moj problem wyglada tak:
Mam funkcje, ktora pobiera jakies tam dane dla danej zmiennej - argumentu (zmienne te sa zapisane w pliku tekstowym). Po pewnym czasie pobierania danych nastepuje blad Notice. Chcialbym wiec, aby funkcja skonczyla swoje dzialanie dla jednej zmiennej po pojawieniu sie Notice, po czym rozpoczela dzialanie dla innej, pobranej zmiennej. Problem lezy niestey w funkcji exit(), ktora calkowicie konczy dzialanie kodu - dla mojej w/w funkcji nie pobiore juz w takim wypadku nowego argumentu jako zmiennej. Bede bardzo wdzieczny za jakas sugestie smile.gif

Pozdrawiam,
T.K.
nospor
No coz, nigdy tak nie musialem kombinować tak jak ty, dlatego też na szybko sklecilem dla Ciebie taki kodzik, by pokazać ci przykładową idee. Kod nie jest zaelegancki, bo dziala na globalach, ale tu chodzi o idee a nie jakosc kodu smile.gif

  1. <?php
  2. function myErrorHandler($errno, $errstr, $errfile, $errline)
  3. {
  4. global $error;
  5. switch ($errno) {
  6.  
  7. case E_NOTICE:
  8. $error = true;
  9. break;
  10.  
  11. }
  12.  
  13. return true;
  14. }
  15.  
  16. //funkcja leci w petli od 1 do 10
  17. //dla 5 zasymulujemy NOTICE i funkcja nam to zakomunikuje
  18. function cosRobi(){
  19. global $error;
  20.  
  21. for ($i=1; $i<=10;$i++){
  22. $error = false;//zerujemy blad
  23. if ($i == 5)
  24. echo $nisteniejacazmienna; //symulacja NOTICE
  25. if (!$error)
  26. echo 'Przetwarzam dla zmiennej $i='.$i;
  27. else
  28. echo 'Ups, nastapil NOTICE przy zmiennej $i='.$i.'. Nie przetwarzam jej';
  29. echo '<br />';
  30. }
  31. }
  32.  
  33. $error = false;
  34.  
  35. // set to the user defined error handler
  36. set_error_handler('myErrorHandler');
  37. cosRobi();
  38. ?>


Przy przetwarzaniu zmiennej $i=5 generuje NOTICE i funkcja to wylapuje.
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.