Operatory Kontroli BłędówPodręcznik PHPPoprzedniRozdział 7. OperatoryNastępnyOperatory 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 ('non_existent_file') or
die ("Failed opening file: error was '$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.
Zobacz także error_reporting().
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.
PoprzedniSpis treściNastępnyOperatory PorównaniaPoczątek rozdziałuOperatory Wykonania Polecenia Systemowego