PHP 支援一個錯誤控制運算子:@。當將其放置在一個 PHP 表達式之前,該表達式可能產生的任何錯誤訊息都會被忽略。
如果用 set_error_handler() 設定了自訂的錯誤處理函數,仍然會被調用,但是此錯誤處理函數可以(並且也應該)調用 error_reporting() ,而該函數在出錯語句前有@ 時將返回0。
如果啟動了 track_errors 特性,則表達式產生的任何錯誤訊息都存放在變數 $php_errormsg 中。此變數在每次出錯時都會被覆蓋,所以如果想用它的話就要儘早檢查。
php忽略錯誤符號@
@是php語言裡的一個忽略錯誤的字符,當將其放置在一個PHP 表達式之前,該表達式可能產生的任何錯誤訊息都被忽略掉。例如:
@include("file.php");
需要注意的是,@ 運算子只對表達式有效。可以這樣理解,如果能從某處得到值,就能在它前面加上 @ 運算子。
例如,可以把它放在變數、函數和 include 呼叫、常數等等之前。
不能把它放在函數或類別的定義之前,也不能用於條件結構例如 if 和 foreach 等。
另外,@通常與or die()一同使用,例如:
(@include("file.php")) OR die("Could not find file.php!");
上述語句的意思是,如果包含file.php不成功的話,例如file.php檔案不存在時,則在網頁上列印“Could not find file.php!”,並且立即停止程式的執行。
如果沒有加@這個字符,那麼當include("file.php")返回錯誤時,網頁上打印的是:
Warning: include(file.php) [function.include]: failed to open stream: No such file or directory Warning: include() [function.include]: Failed opening 'file.php' for inclusion (include_path='.;C:\php5\pear')
有關or die()一些用法
die()函數大家都用得很熟了,不過or die()這樣的寫法,所產生的一些效果你也許還不知道。
先理解下die()。
die定義和用法
die() 函數輸出一則訊息,並退出目前腳本。
語法
die(status)
status 必要。規定在退出腳本之前寫入的訊息或狀態號。狀態號不會寫入輸出。
如果 status 是字串,則函數會在退出前輸出字串。
如果 status 是整數,這個值會被用來當作退出狀態。退出狀態的值在 0 至 254 之間。退出狀態 255 由 PHP 保留,不會被使用。狀態 0 用於成功地終止程式。
附註:如果 PHP 的版本號碼大於等於 4.2.0,那麼在 status 是整數的情況下,不會輸出該參數。
php or die() 語句
經常看到這樣的語句:
$file = fopen($filename, 'r') or die("抱歉,无法打开: $filename");
or在這裡是這樣理解的,因為在PHP中不區分資料型,所以$file可以是int也可以bool,所以這樣的語句不會報錯。但其處理過程可能有些朋友不明白。
其實在大多數的語言中, bool or bool這樣的語句中,如果前一個值為真後一個值就不會再判斷了。這裡也是的,所以如果fopen函數執行正確的話,會回傳一個大於0的int值(這其實就是"真"),後面的語句就不會執行了。
如果fopen函數執行失敗,就會回傳false,那麼就會判斷後面的表達式是否為真了。
結果執行了die()之後,不管回傳什麼,程式都已經停止執行了,並且顯示指定的出錯訊息,也就達到了調試的目的。 就這樣。
通常與錯誤管理一起使用的兩個函數是die()和exit()(嚴格說來,它們是語言構造而不是函數,但是誰在乎這些呢)。
當腳本中呼叫die()和exit()時,將會終止整個腳本。
它們都可用來阻止腳本繼續執行,而使得某些重要的操作(如建立一條資料庫連線)不會發生。你也可以給die()和exit()傳遞一個會在瀏覽器中列印出來的字串。
通常可以看到在OR條件語句中使用die()和exit()。
例如
include('config.inc.php') OR die ('Could not open the file. ');
在包含這樣一行程式碼之後,如果PHP不能包含設定文件,將會執行die()語句,並且會列印could not open the file訊息。
!defined('CURSCRIPT') && define('CURSCRIPT', ");//意思是如果没定义CURSCRIPT常量,则定义CURSCRIPT为空.
在全書和PHP手冊中,你將會看到它的各種變體,因為它是一種處理錯誤的快捷方式(但可能處理過度),而無需使用自定義的錯誤處理程序。
其實die和exit是等價的,用來終止目前腳本,常用在偵錯程式的時候。
以上是php錯誤控制運算子@ or die()實例用法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!