0
我正在爲javascript編寫一個測試套件,並需要一種方法來捕獲任何JS錯誤並繼續處理頁面的其餘部分。如何在JavaScript中捕獲並恢復全局錯誤?
我無法使用window.onerror,因爲返回true會停止瀏覽器繼續進行。我嘗試使用try {} catch塊,但由於各種原因,函數在setTimeout()窗口中運行,似乎搞亂了try catch塊。
例如,我做這樣的事情:
function test(msg, fn) {
$('#output').text(msg);
try {
fn.apply(this);
} catch(e) {
document.write('error'+e);
};
}
,然後調用它像這樣
test('trying this', function() { setTimeout('afunction()',100); });
但如果機能缺失()失敗,不被抓住了錯誤。
有沒有人有任何解決方案或全球錯誤處理程序,讓我恢復的想法?
這是否捕獲所有錯誤?我記得一些類似於PHP的東西,它沒有捕捉到嚴重錯誤。 - 這可能是簡單的JS,但我不知道它。感謝分享! – Smamatti
@Smamatti:我相信它沒有捕獲語法錯誤,僅僅因爲解釋器無法解析'onerror'賦值,如果有的話。 – pimvdb
@pimvdb在**回調**的情況下不起作用,例如從Ajax調用接收到的回調**,因此不適用於所有全局錯誤。 – JoshL