簡體   English   中英

如何使用PHP中的嚴格報告來管理錯誤?

[英]How do I manage errors with strict reporting in PHP?

我使用自定義錯誤處理程序在PHP中完成錯誤報告以跟蹤錯誤。 這非常適合調試並將我在數據庫中的所有錯誤記錄下來以便稍后進行調查。

無論如何,此方法現在禁用@的使用以在發生錯誤時忽略錯誤。 我現在有一個問題,我嘗試重命名我的系統上的目錄,因為它可能偶爾會拋出一個錯誤(如果在其中訪問文件)。

我希望能夠在我的代碼中捕獲此錯誤,以防止執行該函數的其余部分,但我也不希望此錯誤出現在我的錯誤記錄數據庫中(考慮到此錯誤在代碼中是'托管',沒有必要看到它失敗了)。

有一個簡單的解決方案嗎? 我嘗試使用try / catch但它似乎仍然拋出錯誤。

您可以將所有錯誤/警告/通知轉換為例外

function exceptions_error_handler($severity, $message, $filename, $lineno) {
  if (error_reporting() == 0) {
    return;
  }
  if (error_reporting() & $severity) {
    throw new ErrorException($message, 0, $severity, $filename, $lineno);
  }
}
set_error_handler('exceptions_error_handler');

我認為處理異常比PHP本機錯誤更好。

@zerkms的解決方案可以正常工作,但我的錯誤處理程序已經完成,所以要擴展它以給我功能,我只是包括:

if ( error_reporting() == 0 )
  return;

在我的處理程序的開頭。 這樣,如果在函數上使用@ ,則仍會拋出錯誤,但在處理程序的開頭被忽略(因此,沒有登錄到數據庫等),我仍然會從函數中獲取布爾結果,例如作為rename()

如果需要,這仍然允許我在代碼上使用try / catch解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM