這裏就是我只想做,如果一個致命的錯誤是在該文件中,我不希望腳本暫停執行是否有可能在包含文件上捕獲致命錯誤php?
try {
require "somethin.php"
} catch(...) {}
會的file_get_contents()
和eval()
一些方法是倒過來
這裏就是我只想做,如果一個致命的錯誤是在該文件中,我不希望腳本暫停執行是否有可能在包含文件上捕獲致命錯誤php?
try {
require "somethin.php"
} catch(...) {}
會的file_get_contents()
和eval()
一些方法是倒過來
注意 - 這並不回答海報的問題。醜陋的現實是你不能從一個致命的錯誤中恢復,但這對其他錯誤有效
require不會引發異常,而是會默認觸發一個錯誤。
要讓PHP拋出異常,你必須註冊一個錯誤異常處理程序。
你可以找到一個例子here
但基本上
function exception_error_handler($errno, $errstr, $errfile, $errline) {
throw new ErrorException($errstr, $errno, 0, $errfile, $errline);
}
set_error_handler("exception_error_handler");
有了這個戲有可能趕上和處理,你認爲合適的錯誤
我想提一下,在需要之前檢查文件是否可以讀取可能會更好,不是嗎? –
@DaveChen這是一種方法......我更喜歡這個,因爲它只是文件系統上的一個命中 – Orangepill
值得注意的是,這將導致幾乎所有的PHP錯誤都拋出異常(在我看來是一件好事),除了解析時間錯誤 – Orangepill
沒有真的沒有理智的方式來捕捉(不可捕捉的;-))在PHP中的致命錯誤。所以也沒有從這個中恢復的理智方法。這是有道理的,因爲這是一個致命的錯誤。
基本上PHP說的是:這是你不能/不應該試圖恢復的東西。
注意,也@Orangepill's solution不會致命錯誤工作:如果你想要做的事,當一個致命的錯誤發生(例如發送電子郵件給你,告訴你這個)http://codepad.org/4nzzYQSG
+1我的解決方案如下,雖然有用甚至不會拋出一些東西給上述例子。 – Orangepill
+1讓我感到自豪。 (儘管我不知道你們在談論什麼:P) – samayo
那麼,做什麼是正確的事情......尼克斯我的答案或只是橫幅頂部的橫幅說明它不回答這個問題? – Orangepill
你爲什麼不先試試? – samayo
公平地說,他可能確實嘗試過,哈哈你有沒有發現? –
@DaveChen你說「很可能」,因爲他沒有提供任何提示,不管他是否做。那麼,這裏的行爲是誰呢?嗯。不幸的是,我讀到他噁心的評論。 – samayo