Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z operatorem błędu @
Forum PHP.pl > Forum > PHP
eMartio
Mam problem z wytłumieniem komunikatu o błędzie operatorem błędu @. Otoż mam tak ustawioną obsługę błędów:

  1. <?php
  2. ini_set('error_reporting', E_ALL ^ E_NOTICE);
  3. ?>


Teraz uruchamiam plik test.php
  1. <?php
  2.  
  3. $my_file = @file('nieistniejący_plik');
  4.  
  5. ?>


Wszystko działa, błąd nie zostanie wyświetlony.

Jednak kiedy przekażę obsługę błędów własnej funkcji, błąd (ostrzeżenie wykonania: E_WARNING) zostaje wyświetlony:
  1. <?php
  2.  
  3. set_error_handler(array('Klasa', 'Metoda'), E_ALL ^ E_NOTICE);
  4.  
  5. ?>


Pomimo, że jest ustawiony taki sam poziom raportowania. Musiałbym dodać jeszcze ^ E_WARNING, ale nie chcę tego robić, gdyż niektóre ostrzeżenia muszą się pojawić, np. te nie wytłumione operatorem @.

Co muszę zrobić, aby nie pokazywał ostrzeżeń wytłumionych operatorem błędów? Używam php 5.1.2.

Proszę o pilną pomoc.
hwao
set_error_handler" title="Zobacz w manualu php" target="_manual()

Masz tutaj wytlumaczone to..
Martio
Cytat(hwao @ 2006-04-04 07:49:33)

Zaglądałem tam, ale nie za bardzo jestem za pan brat z angielskim. Może mi to ktoś wytłumaczyć i podać ew. rozwiązanie tego problemu?
nospor
  1. <?php
  2. function blad($errno, $errstr){
  3.  
  4. if(error_reporting() == 0) // error_reporting() = 0, so it was called with @ in front of it
  5. {
  6.  echo 'nic nie wyswietlam, gdyz byla malpa';
  7. }
  8. else
  9. {
  10. echo 'wyswietlam errora, gdyz nie bylo malpy:<br />'.$errstr;
  11. }
  12.  
  13. }
  14. set_error_handler('blad', E_ALL ^ E_NOTICE);
  15. @file('sdfsdf');
  16.  
  17. ?>
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.