2012-04-16 54 views
0

我有一個奇怪的問題與error_reporting函數。保存並恢復PHP中的error_reporting級別

我想保存當前的error_reporting級別,禁用幾行錯誤報告並將其還原。 所以我有下面的代碼:

$oldErrorReporting = error_reporting(); 
error_reporting(0); 
//Some code, that will generate warning, or error, that I don't want to show 
error_reporting(oldErrorReporting); 

所以,如果我刪除最後一行,沒有錯誤,一切工作正常。但是,如果我添加最後一行,則在錯誤報告關閉時,代碼中出現錯誤。 那麼,是否有任何要清除error_reporting級別爲0時發生的那些錯誤,並恢復默認錯誤報告級別,而不會在錯誤報告關閉時發生這些錯誤?

+0

這是從字面上你碼?那麼你錯過了一個'$'。否則,你知道錯誤抑制運算符「@」嗎?此外,你有什麼代碼觸發錯誤? – deceze 2012-04-16 06:51:03

回答

1

也許它只是一個錯字(如果是的話,請不要重寫代碼的一個問題,只需複製粘貼&(和刪除uneccesssary線)),但你忘了$ -sign在最後一行:

error_reporting($oldErrorReporting); 
+0

不幸的是,當我在我的問題中粘貼代碼時,這只是鍵入。 – Ivica 2012-04-16 07:42:55

1

什麼樣的代碼會產生警告?如果它是一個功能可按嘗試,而不是降低調試級別,相應的警告本身 - 在函數名

前面寫上「@」看看:

Suppress error with @ operator in PHP

+0

問題是與imap_open函數,它會產生錯誤,萬一與imap服務器連接失敗,出於任何原因,我想避免這種情況,並告知用戶是否有可能連接到IMAP服務器,沒有錯誤的細節。 我試着用@來防止錯誤,但它不能按預期工作。 – Ivica 2012-04-16 07:44:30

+0

你會介意在這裏發佈importatant部分的代碼嗎?有幾種方法來處理錯誤...條件,例外等。 – xholicka 2012-04-16 09:13:22