Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Obsługa błędów
Forum PHP.pl > Forum > PHP
Virti
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)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ć?
artega
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.
Virti
dokładnie o to mi chodziło, dzięki smile.gif
Lejto
a E_USER_NOTICE to są błędy po stronie usera czy jak?
artega
Cytat
a E_USER_NOTICE to są błędy po stronie usera czy jak?

Szukanie nie jest trudne, sprawdź sam.
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.