Podręcznik PHP
Poprzedni
Rozdział 11.
Operatory
Następny
Operatory Kontroli Błędów
PHP obsługuje obecnie jeden operator kontroli błędów: znak małpy (@).
Jeśli znak ten zostanie postawiony przed dowolnym wyrażeniem w PHP, jakiekolwiek powiadomienia o błędach wygenerowane przez to wyrażenie zostaną pominięte (nie będą wyświetlone).
Jeśli mechanizm track_errors został włączony, jakiekolwiek powiadomienie o błędzie zostanie zapisane do zmiennej globalnej $php_errormsg.
Należy jednak pamiętać, że zawartość tej zmiennej jest nadpisywana przy każdym błędzie, więc po wystąpieniu kolejnego błędu w skrypcie, informacja o poprzednim błędzie jest tracona.
?php / * Zamierzony błąd obsługi pliku * / $my_file = @file ('nieistniejący_plik') or die ("Błąd przy otwieraniu pliku: treść błędu: '$php_errormsg'"); / / mechanizm ten działa dla wszystkich wyrażeń, nie tylko dla funkcji: $value = @$cache[$key]; / / spowoduje niewyświetlenie powiadomienia, jeśli nie istnieje wpis do tablicy o / / indeksie $key.?
Notatka:
Operator @ działa tylko na wyrażeniach.
Tłumacząc to łopatologicznie: jeśli da się pobrać wartość czegoś, można postawić operator @ przed tym czymś.
Zgodnie z powyższą regułą, można postawić @ przed zmiennymi, wywołaniami funkcji, instrukcjami include(), stałymi, itp.
Nie można stawiać @ przed definicjami funkcji bądź klasy, lub strukturami warunkowymi, takimi jak if lub foreach, itd.
Patrz także: error_reporting().
Notatka:
Operator "@" nie ukrywa komunikatów o błędach, które są wynikiem błędu parsowania (parse error).
Ostrzeżenie
Obecnie operator kontroli błędów "@" wyłączy wyświetlanie powiadomienia o błędzie nawet dla błędów krytycznych, które przerwą wykonywanie skryptu.
Oznacza to, że jeśli użyjesz tego operatora przed wywołaniem funkcji, która jest nieosiągalna lub ma literówkę w nazwie, skrypt przerwie pracę nie powiadamiając dlaczego.
Poprzedni
Spis treści
Następny
Operatory Porównania
Początek rozdziału
Operatory Wykonania Polecenia Systemowego