我發現,與異步回調,我需要寫每一個回調函數一個try/catch。這似乎有點容易出錯的是,其中有我可以實現一個頂級嘗試的方法或技術/捕捉,捕捉一切?如果不是我正在使用的技術被認爲是好的做法,還是有更好的方法來做事情?是否有這樣的事,作爲一個「所有」 JavaScript錯誤處理程序?
0
A
回答
1
有這樣做的方法有兩種:
- 設置window's
onerror
attribute- 叫三個參數(消息,網址,LINENUMBER)
- 返回
true
(!)阻止默認錯誤公頃ndling(使這就像一個包羅萬象的)
- 添加
error
事件監聽器window
- 調用錯誤事件
e
作爲其唯一的參數 - 調用
e.preventDefault()
防止默認的錯誤處理
- 調用錯誤事件
如果不是,我是我們的技術認爲是好的做法還是有更好的辦法做事?
由於JavaScript的動態特性,try/catch
非常緩慢。幾乎總是有更好的方法,例如:在調用方法之前檢查是否存在某個方法。
// bad
try {
document.getElementById('foo').focus();
} catch(e) {
alert('foo not found');
}
//good
var el = document.getElementById('foo');
if (el) {
el.focus();
} else {
alert('foo not found');
}
對於您的具體情況,請顯示一些您的代碼;也許在一個單獨的問題。
1
不,不這樣做,無所不包,幾乎總是導致的問題(因爲你不能例外區分得非常好)。
0
這可能是不依賴於一個全球性的包羅萬象的一個好主意,但它不是一個壞主意,有一個(在這裏,你可能不希望引發錯誤的情況下)。這樣你就可以按照你想要的方式處理未被捕獲的錯誤。
使用jQuery:
$(window).error(function (msg, url, line) {
//do something
});
相關問題
- 1. 是否有這樣的事,作爲一個「是」查詢
- 2. 是否只有一個事件處理程序的所有對象的副本
- 3. 有沒有這樣的事情作爲一個JavaScript編譯器?
- 4. 在一個處理程序中處理所有事件?
- 5. 是否有多個onmouseup事件處理程序有效的html?
- 6. 是否可以註冊這樣的事件處理程序?
- 7. 有沒有這樣的事情作爲一個RootController
- 8. 是否addEventListener(ErrorEvent.ERROR,處理程序)處理actionscript3中的所有類型的錯誤事件?
- 9. 重構JavaScript事件處理程序 - 這是一個合理的事情嗎?
- 10. 作爲一個const構造函數是否有這樣的事情?
- 11. 是否有可能處理Java中的所有錯誤?
- 12. Javascript Promise.all - 如何處理所有錯誤
- 13. 這不是一個語法錯誤?這沒有道理! (javascript)
- 14. 獲取頁面上的所有javascript錯誤/ javascript錯誤處理
- 15. 有沒有這樣的事情,作爲一個MXML接口
- 16. 是否有這樣的事,作爲一種編程語言試試環`
- 17. 這個javascript事件處理程序是做什麼的?
- 18. 處理所有錯誤
- 19. 所有ASP.Net全局錯誤處理程序...但幾個
- 20. 是否有一個處理所有RFC4511邏輯的LDAP庫?
- 21. 這是一個有效的Sinatra路線處理程序嗎?
- 22. 這是所有編程語言的一個普遍的錯誤
- 23. 在javascript中撤銷所有鼠標事件處理程序?
- 24. 處置一個對象是否處理所有的IDisposable屬性?
- 25. 爲什麼這個C程序中所有的輸出都是一樣的?
- 26. 是否有任何C預處理器作爲獨立程序?
- 27. 春季3檢查是否有一個URL的處理程序
- 28. C# - 爲類的所有實例添加事件處理程序
- 29. 這兩種刪除事件處理程序的方式是否有區別?
- 30. 作爲我整個解決方案的變量是否有這樣的事情?
在JavaScript中使用'try..catch'非常罕見。如果你經常使用它,你會錯誤地編寫你的代碼。 – zzzzBov 2012-03-20 02:13:11