錯誤控制運算符

PHP 支援一個錯誤控制運算符:@。當將其放置在一個 PHP 表達式之前,該表達式可能產生的任何錯誤訊息都被忽略掉。

若果啟動了 track_errors 特性,表達式所產生的任何錯誤訊息都被存放在變量 $php_errormsg 中。此變量在每次出錯時都會被覆蓋,所以若果想用它的話就要盡早檢查。

<?php
/* Intentional file error */
$my_file = @file ('non_existent_file') or
    die (
"Failed opening file: error was '$php_errormsg'");

// this works for any expression, not just functions:
$value = @$cache[$key];
// will not issue a notice if the index $key doesn't exist.

?>

注: @ 運算符只對表達式有效。對新手來說一個簡單的規則就是:若果能從某處得到值,就能在它前面加上 @ 運算符。例如,可以把它放在變量,函數和 include() 呼叫,常量,等等之前。不能把它放在函數或類的定義之前,也不能用於條件結構例如 ifforeach 等。

參見 error_reporting() 及手冊中錯誤處理及日誌函數的有關章節。

警示

目前的「@」錯誤控制運算符前綴甚至使導致腳本終止的嚴重錯誤的錯誤報告也失效。這意味著若果在某個不存在或類型錯誤的函數呼叫前用了「@」來抑制錯誤訊息,那腳本會沒有任何跡象顯示原因而死在那裡。