我正在爲作業做一個小文件瀏覽器 - 而且我的工作和我需要的一樣好,但是我現在對PHP中的錯誤場景感到有點困惑,因爲我正試圖重構我的編碼。由於E_WARNING,我是否需要嘗試/捕獲PHP中的opendir?
我習慣了C++/C#try/catch錯誤處理,其中PHP似乎有一些變體。什麼是困惑我的是:
資源執行opendir(字符串$ PATH [,資源$背景])
成功則返回目錄句柄資源,或FALSE的失敗。
如果路徑由於權限限制或文件系統錯誤而無法打開 ,則opendir()返回 FALSE並生成級別爲E_WARNING的PHP錯誤。您可以通過在 函數名稱的前面加上'@'來抑制opendir()的錯誤輸出 。
從http://php.net/manual/en/function.opendir.php。
我是否需要捕獲在那裏提到的E_WARNING級別生成的PHP錯誤,還是很愚蠢?我不明白爲什麼它會返回false並拋出一個錯誤 - 不應該錯誤拋出使它,所以你不正常返回?
這是一個PHP內在不一致的例子,它絕對是一種*腳本*語言。你不會用try ... catch來捕捉警告。異常和錯誤/警告是兩種不同機制的組成部分,並且稍後會添加例外。這相當混亂。在PHP中非常小心謹慎地編寫代碼:您在C++/C#中的專家級語言是一致的,PHP不是。小心。 – gd1
小心使用'@'來處理「錯誤」。這將抑制所有錯誤,而不僅僅是警告。查看PHP手冊中的提示:http://www.php.net/manual/en/language.operators.errorcontrol.php –
我知道有一件有趣的事情發生在那裏。我讀到的第一個網站叫做E_WARNING,這個例外讓我感到困惑。謝謝你們。 –