我有一個複雜的JavaScript應用程序,當發生某些意外錯誤時,我想記錄它們進行調試,但仍然繼續。如何將錯誤記錄爲未被捕獲?
如何將它們登錄到控制檯,以便它們的堆棧可以以正常方式訪問未捕獲的錯誤?
Chrome控制檯中的未被捕獲的錯誤通常只顯示錯誤消息,並且有一個顯示三角形,可以單擊以顯示堆棧跟蹤。這個(以及Chrome現在或未來可能爲未捕獲的錯誤添加的其他調試功能)是我想要的。
如果我做了明顯的catch (e) { console.log(e); }
或console.error(e)
,錯誤對象,而不是顯示在對象的檢查方式 - 有一個三角形,但點擊它顯示的錯誤對象(的性質,所以我必須點擊四次以非常格式化的方式獲取堆棧屬性)。我可以登錄e.stack
,但仍然缺少一些標準功能。
setTimeout(function() { throw e; }, 0);
是另一種選擇,但會混淆調試,因爲它會更改控制檯中消息的順序。 (把整個代碼可能拋出setTimeout 可能是可行的,但我想調查只是修復日誌記錄第一。)
我不認爲你想要什麼是可能的,但如果你可以,看看AngularJS的來源,他們基本上是你想要的。被警告說*它使任何其他瀏覽器中的調試幾乎不可能!* – Kroltan 2015-04-06 00:24:17