2012-02-16 47 views
1

考慮下面的JavaScript函數:如何確保將所有JavaScript錯誤寫入Chrome開發人員工具控制檯?

function triggerError() { 
    var something = undefined; 
    // The next line will trigger 'TypeError: Cannot call ... of undefined' 
    something.doesNotExist(); 
} 

當直接運行triggerError();以下錯誤寫入紅色Chrome開發者工具控制檯,預計:

TypeError: Cannot call method 'doesNotExist' of undefined 

然而,當triggerError();是被從事件監聽器運行,沒有錯誤寫入控制檯(函數調用只是在something.doesNotExist();處靜靜地死掉),這使得在錯字等情況下調試非常棘手。

如何確保將所有錯誤寫入Chrome開發人員工具控制檯,包括從事件偵聽器/回調中運行的代碼中生成的錯誤?

一個明顯的解決辦法是將try { ... } catch (x) { console.log(x) };添加到整個地方,但由於我不知道我會在哪裏添加拼寫錯誤,所以這不是一個前進的方向。

+0

這聽起來就像Chrome中的一個bug一樣。您應該在http://new.crbug.com報告它 – abraham 2012-02-16 20:55:09

+0

嗯,我*做*在Chrome中獲取錯誤消息 - **現場演示:** http://jsfiddle.net/zzcYH/1/ – 2012-02-16 21:06:08

回答

1

你能告訴你的樣品,我試圖重現它在下面的代碼片段和它的作品完美的罰款對我來說:

<script> 
function triggerError() { 
    var something = undefined; 
    // The next line will trigger 'TypeError: Cannot call ... of undefined' 
    something.doesNotExist(); 
} 
window.addEventListener("click", triggerError, true); 
</script> 
<body onclick="triggerError()"> 
</body> 
+0

你是對的 - 我的測試用例是錯誤的。抱歉! :-) – knorv 2013-01-13 13:09:58

1

你可以使用一個try catch

function triggerError() { 
    try{ 
     var something = undefined; 
     // The next line will trigger 'TypeError: Cannot call ... of undefined' 
     something.doesNotExist(); 
    }catch(ex){ 
     console.error(ex.message); 
    } 
} 
+0

謝謝,但我不知道我會在哪裏添加我的拼寫錯誤,所以這不會有太大的幫助。我現在已經在問題中明確指出,我正在尋找不涉及更改代碼的修復程序。 – knorv 2012-02-16 21:02:30

相關問題