前言
在Node.js中,當某個回調函數發生了錯誤,整個進程都會崩潰,影響后面的代碼執行。
Node.js這樣處理,是因為在發生未被捕獲的錯誤時,進程的狀態就不確定。之后也就無法正常工作了。如果錯誤始終不處理的話,就回一直拋出意料之外的錯誤,這樣不利于調試。
防止錯誤導致的進程阻塞的方法主要有如下兩種:
一. try-catch
try-catch
允許進行異常捕獲,并讓代碼繼續執行下去:
例如:
當函數拋出錯誤時,代碼就停止執行了:
(function() { var a = 0; a(); console.log("get here."); // 不執行})();
使用try-catch
進行錯誤處理后,代碼仍可繼續執行:
(function() { var a = 0; try { a(); } catch (e) { console.log(e); } console.log("get here."); // get here.})();
try-catch不能捕獲未來執行函數錯誤
要捕獲未來才執行到的函數所拋出的錯誤時不可能的。這會直接拋出未捕獲的異常,并且catch
代碼塊永遠都不會被執行:
try { setTimeout(function() { throw new Error("here"); }, 10);} catch(e) { console.log(e);}
這就是為什么在Node.js中,每步豆芽正確進行錯誤處理的原因。
添加uncatchException處理器
若添加了 uncatchException
處理器,當函數拋出錯誤時,進程也不會退出。
process.on("uncatchException", function(e) { console.log(e); process.exit(1);});
總結
以上就是防止Node.js中錯誤導致進程阻塞的辦法的全部內容,希望對大家使用Node.js有所幫助。
新聞熱點
疑難解答