2010-05-23 48 views
2

我很瞭解error_reporting(0); & ini_set('display_errors', "Off");使錯誤消息消失。PHP關閉錯誤 - 僅在一個文件中

什麼是適當的方式來做到這一點 - 僅針對特定文件或部分代碼? 用@表示錯誤似乎是一個壞主意,因爲它顯然會降低代碼的速度...

原因是什麼?由於網絡設置的原因,我們在開發LAN中有許多memcached服務器,因此我們每小時都會多次接收錯誤,除了停止使用memcache或關閉整個應用程序的錯誤外,我們無能爲力,這將是給我們頭疼 - 在開發階段:)

+1

你得到的答案就在你的手中。在相關代碼之前和之後調用這些函數。 – webbiedave 2010-05-23 22:02:25

回答

3

你有種回答你自己的問題。要爲特定文件執行此操作,請使用error_reporting(0);將關閉錯誤。我想你也可以在腳本中多次調用它。

您也可以使用php異常來「捕捉」一段代碼中的錯誤。例如:

try { 
    // code to ignore errors for here 
} catch { 
    // you can output a custom error here, but putting nothing here will effectively mean errors are ignored for the try block 
} 

即使腳本內部有錯誤,該腳本仍將繼續運行通過try塊。有關更多信息,請參閱PHP Manual Entry

1

的中間,您可以在運行時更改錯誤報告級別:

<? 

    error_reporting(E_ALL); 

    ... some code .... 

    error_reporting(0); 

    ... some more code .... 

    error_reporting(E_ALL); 

據我所知,沒有其他辦法,但我不能想想這種情況是不夠的。你可以嗎?

9

雖然這是一個好主意,修復實際導致錯誤的是什麼。

0

這真的是很久以前,但像我這樣的人可能會使用我的答案。

當我需要做這種東西時,我只是把@放在變量之前,以便不顯示來自這個變量的錯誤。

例如:

switch(@$var!="e") { 

.... 

}