嘗試和捕捉本身是非常昂貴的。即使它沒有被使用(即不會產生異常),仍然有一些開銷被「嵌入」到生成的程序集中。至於簡單的檢查文件是否存在並且可以訪問,同樣的事情發生:這兩件事都是系統調用,通常更昂貴。但是,您也應該考慮對文件的讀取操作也是系統調用。
現在問題被縮減爲更昂貴的:2個系統調用或1個系統調用與異常處理。我在這裏的假設(我對此有些自信)是在異常實際被拋出的情況下,後者會更加昂貴,但在其他情況下更快。既然你已經指出在大多數情況下訪問文件沒有問題,那麼你可能會「應該」使用這些異常。處理錯誤更容易,並且使代碼更漂亮一些(儘管這是可以爭論的)。
更多關於代碼的事情:它完全取決於你的框架現在的樣子以及你想要它的樣子。事實上,你可以創建一個能夠以這兩種方式處理所有這些東西的類,並且它們都將看起來很乾淨(如果正確完成)並且易於維護。但是,如果你不想將它保存在一個單獨的類(或單獨的文件\函數\宇宙)中,我會去處理異常。
最後,如前所述,在你的情況下,異常處理通常會更快,但問自己一個問題:它有多大的問題?你是否每頁訪問執行一次操作,還是多次執行操作?該頁面是經常訪問還是每天只訪問一次?與所有其他網頁\算法相比,這會產生多少影響。有一個很好的概念,知道90/10
規則:90%的代碼被執行10%的時間,反之亦然。如果這個特定的代碼在90%以內,你甚至不應該擔心性能,因爲你的擔心應該是其他10%的代碼。 (您可以閱讀更多關於此)
還有一件事:正如duskwuff指出的,無論這裏寫的是什麼PHP版本> = 7.0