php抑制错误,PHP 行内错误抑制
顯示行號
|
選擇喜歡的代碼風格
默認
GitHub
Dune
LakeSide
Plateau
Vibrant
Blue
Eighties
Tranquil
你可以讓 PHP 利用錯誤控制操作符 @ 來抑制特定的錯誤。將這個操作符放置在表達式之前,其后的任何錯誤都不會出現。
看如下 PHP 代碼:
echo @$foo['bar'];
如果 $foo['bar'] 存在,程序會將結果輸出,如果變量 $foo 或是 'bar' 鍵值不存在,則會返回 null 并且不輸出任何東西。如果不使用錯誤控制操作符,這個表達式會產生一個錯誤信息 PHP Notice: Undefined variable: foo 或 PHP Notice: Undefined index: bar 。
這看起來像是個好主意,不過也有一些討厭的代價。PHP 處理使用 @ 的表達式比起不用時效率會低一些。過早的性能優化在所有程序語言中也許都是爭論點,不過如果性能在你的應用程序 / 類庫中占有重要地位,那么了解錯誤控制操作符的性能影響就比較重要。
其次,錯誤控制操作符會 完全 吃掉錯誤。不但沒有顯示,而且也不會記錄在錯誤日志中。此外,在正式環境中 PHP 也沒有辦法關閉錯誤控制操作符。也許你認為那些錯誤時無害的,不過那些較具傷害性的錯誤同時也會被隱藏。
如果有方法可以避免錯誤抑制符,你應該考慮使用,舉例來說,上面的程序代碼可以這樣重寫:
echo isset($foo['bar']) ? $foo['bar'] : '';
當 fopen() 載入文件失敗時,也許是一個使用錯誤抑制符的合理例子。你可以在嘗試載入文件前檢查是否存在,但是如果這個文件在檢查后才被刪除,而此時 fopen() 還未執行 (聽起來有點不太可能,例子似乎比較極端,但是確實會發生),這時 fopen() 會返回 false 并且 拋出操作。這也許應該由 PHP 本身來解決,但這時一個錯誤抑制符才能有效解決的例子。
xdebug.scream = On
前面我們提到在正式的 PHP 環境中沒有辦法關閉錯誤控制操作符。但是 Xdebug 有一個 xdebug.scream 的 ini 配置項,可以關閉錯誤控制操作符。你可以按照下面的方式修改 php.ini。
ini_set('xdebug.scream', '1')
「Scream」這個 PHP 擴展提供了和 xDebug 類似的功能,只是 Scream 的 ini 設置項叫做 scream.enabled 。
當你在調試代碼而錯誤信息被隱藏時,這是最有用的方法。請務必小心使用 scream ,而是把它當作暫時性的調試工具。有許多的 PHP 函數類庫代碼也許無法在錯誤抑制操作符停用時正常使用。
PHP 錯誤處理擴展閱讀
發表評論
總結
以上是生活随笔為你收集整理的php抑制错误,PHP 行内错误抑制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 笔记本电脑怎么连接显示屏
- 下一篇: php反射机制详解,PHP反射机制实现插