Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Obsługa błędów, dodając obsługę "error_reporting"
Virti
post
Post #1





Grupa: Zarejestrowani
Postów: 115
Pomógł: 12
Dołączył: 11.01.2005
Skąd: Zduńska Wola

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


Witam

Zastanawiam się, w jaki sposób mógłbym sprawdzić, czy dany błąd może być wyświetlony czy nie. Korzystam z własnego uchwytu błędów. Dokładnie chodzi mi o sytuację taką, że np. ustawiam sobie error_reporting(E_ALL ^ E_USER_NOTICE); czyli z wyłączeniem błędów typu E_USER_NOTICE. Następnie korzystam z funkcji trigger_error('test', E_USER_NOTICE);

I teraz mój problem. Jak mogę sprawdzić, czy dany błąd może być wyświetlony? Chodzi o to, że mająć wyłączone pojawianie się E_USER_NOTICE, błąd ten będzie nadal wyświetlany przez mojego handlera.

Myślałem, nad porównywaniem error_reporting()>=E_USER_NOTICE, ale nie działa to w powyższym wypadku (sprawdza się natomiast przy error_reporting(E_ERROR | E_WARNING)(IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) :

Kod
error_reporting(E_ALL ^ E_USER_NOTICE);

var_dump(error_reporting(),  E_USER_NOTICE, (error_reporting() >= E_USER_NOTICE));

w wyniku czego dostaję:
int(6135) int(8) bool(true)

Ma ktoś może jakiś pomysł, w jaki sposób mogę to kontrolować?

Ten post edytował Virti 23.04.2008, 16:43:49
Go to the top of the page
+Quote Post
artega
post
Post #2





Grupa: Zarejestrowani
Postów: 174
Pomógł: 42
Dołączył: 22.07.2007
Skąd: /dev/random

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


Nie jestem pewny czy dobrze zrozumiałem... jeżeli chcesz by błędy E_USER_NOTICE nie były przetwarzane przez error_handler możesz zrobić to za pomocą operatorów bitowych:
  1. <?php
  2.  
  3. error_reporting(E_ALL^E_USER_NOTICE);
  4.  
  5. function myErrorHandler($errno, $errstr, $errfile, $errline)
  6. {
  7. if (!(error_reporting() & E_USER_NOTICE))
  8. {
  9. return true;
  10. }
  11.  
  12. /* Don't execute PHP internal error handler */
  13. return true;
  14. }
  15.  
  16. set_error_handler("myErrorHandler");
  17.  
  18. trigger_error('test', E_USER_NOTICE);
  19.  
  20. ?>

funkcja myErrorHandler sprawdza czy stan poziomu raportowania błędów wchodzi w jej zakres.
Go to the top of the page
+Quote Post
Virti
post
Post #3





Grupa: Zarejestrowani
Postów: 115
Pomógł: 12
Dołączył: 11.01.2005
Skąd: Zduńska Wola

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


dokładnie o to mi chodziło, dzięki (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Lejto
post
Post #4





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

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


a E_USER_NOTICE to są błędy po stronie usera czy jak?
Go to the top of the page
+Quote Post
artega
post
Post #5





Grupa: Zarejestrowani
Postów: 174
Pomógł: 42
Dołączył: 22.07.2007
Skąd: /dev/random

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


Cytat
a E_USER_NOTICE to są błędy po stronie usera czy jak?

Szukanie nie jest trudne, sprawdź sam.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 16.09.2025 - 06:47