2013-08-20 76 views
0

當try ... catch塊來自window上註冊的事件偵聽器時,它不捕獲此錯誤。在Firefox,Chrome和Safari中也是如此。
我意識到我可以包裝功能的內容,但爲什麼它不能在這種形式?我希望以這種方式包裝大量的代碼,並且默默地跟蹤錯誤。try ... catch with addEventListener

try{ 

    function onLoad(){ 
     var a = b; 
    } 

    //onLoad(); //This is caught 
    window.addEventListener('load', onLoad, false); //This is not caught 

} 
catch(e){ 
    console.log("Catch: ", e); 
} 

回答

0

發生這種情況,因爲這樣的代碼:在頁面加載

window.addEventListener('load', onLoad, false); //This is not caught 

運行後

。該代碼在try catch塊之後執行。 要獲得所需的行爲,您必須使用window.onerror。

0

因爲代碼

window.addEventListener('load', onLoad, false) 

只需調用該函數的onLoad重視窗口「的onLoad」事件,它不能出現的任何錯誤,從功能的onLoad本身來 的錯誤,你應該做的該功能裏面的try catch