2011-10-13 28 views
6

我有一個node.js腳本,任何時候發生錯誤時,node.js都會停止運行,併發生錯誤。node.js,捕捉錯誤,所以腳本不會中斷?

在node.js中檢查錯誤的正確方法是什麼,所以它不會中斷腳本並導致node.js停止?

+0

修復你的錯誤?在'try ... catch'塊中包含潛在運行時錯誤的代碼?這與其他語言/口譯員有什麼不同? – nrabinowitz

+0

@nrabinowitz因此,如果發生錯誤嘗試捕獲它不會破壞腳本?請原諒我缺乏的知識,對nodejs來說很新,所以它超出我的舒適程度。試圖學習它。 – John

+0

是的,JavaScript中的'try ... catch'與其他語言的工作方式相同,可以捕獲並處理運行時代碼中的錯誤(儘管它對分析時錯誤無幫助,例如語法錯誤)。請參閱https://developer.mozilla.org/en/JavaScript/Reference/Statements/try..catch – nrabinowitz

回答

17

您可以通過設置以下趕上否則未被捕獲的錯誤:

process.on('uncaughtException', function (exception) { 
    // handle or ignore error 
    }); 

當然,如果你的東西運行腳本像永遠或節點管理器,當你的腳本「停止」將開始回升,這可能會解決你的問題。

+0

真的很方便...它開始討厭檢查我的日誌文件 – Carlton

+1

這仍然是推薦?這有沒有副作用? – Samson

+0

Joylet網站強烈建議不要使用這種錯誤處理方法。 https://www.joyent.com/developers/node/design/errors – MattSidor

3

不再推薦捕捉uncaughtException。

使用domains是優選的。使用「uncaughtException」或Domain,強烈建議在處理異常後重新啓動該進程。

爲了自動重啓進程,NodeJS提供了另一個名爲Cluster的庫,它幫助管理工作線程。

+1

域現在正式被棄用。 https://nodejs.org/api/domain.html – MattSidor