Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] przerywanie wykonywania przy błędzie
vanvar
post 13.06.2007, 13:01:33
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 26.05.2007

Ostrzeżenie: (0%)
-----


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?

Ten post edytował vanvar 13.06.2007, 23:05:23
Go to the top of the page
+Quote Post
rasgan
post 13.06.2007, 13:41:20
Post #2





Grupa: Zarejestrowani
Postów: 97
Pomógł: 0
Dołączył: 30.05.2007
Skąd: Kleszczów

Ostrzeżenie: (0%)
-----


poprzez zastosowanie wyjątków pewnie się da. Poczytaj w manualu o TRY i CATCH


--------------------
Szczęścia w mrokach...
Go to the top of the page
+Quote Post
nospor
post 13.06.2007, 13:48:38
Post #3





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Cysiaczek
post 13.06.2007, 13:49:09
Post #4





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




bez jaj - exit(), die(), throw new Exception(). Manual się kłania
Pozdrawiam.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
vanvar
post 13.06.2007, 23:04:32
Post #5





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 26.05.2007

Ostrzeżenie: (0%)
-----


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.

Ten post edytował vanvar 13.06.2007, 23:06:11
Go to the top of the page
+Quote Post
nospor
post 14.06.2007, 06:47:02
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 17:17