欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

防止Node.js中錯誤導(dǎo)致進程阻塞的辦法

 更新時間:2016年08月11日 16:13:03   投稿:daisy  
Node.js我們用到非常的多了,如果我們開發(fā)不當(dāng)可能因錯誤導(dǎo)致進程阻塞問題,對于進程阻塞問題一直是個頭痛的事情,今天我們一起來看一篇關(guān)于Node.js防止錯誤導(dǎo)致的進程阻塞示例,下面一起來看看。

前言

在Node.js中,當(dāng)某個回調(diào)函數(shù)發(fā)生了錯誤,整個進程都會崩潰,影響后面的代碼執(zhí)行。

Node.js這樣處理,是因為在發(fā)生未被捕獲的錯誤時,進程的狀態(tài)就不確定。之后也就無法正常工作了。如果錯誤始終不處理的話,就回一直拋出意料之外的錯誤,這樣不利于調(diào)試。

防止錯誤導(dǎo)致的進程阻塞的方法主要有如下兩種:

一. try-catch

try-catch允許進行異常捕獲,并讓代碼繼續(xù)執(zhí)行下去:

例如:

當(dāng)函數(shù)拋出錯誤時,代碼就停止執(zhí)行了:

(function() {
 var a = 0;
 a();
 console.log("get here."); // 不執(zhí)行
})();

使用try-catch進行錯誤處理后,代碼仍可繼續(xù)執(zhí)行:

(function() {
 var a = 0;
 try {
  a();
 } catch (e) {
  console.log(e);
 }
 console.log("get here."); // get here.
})();

try-catch不能捕獲未來執(zhí)行函數(shù)錯誤

要捕獲未來才執(zhí)行到的函數(shù)所拋出的錯誤時不可能的。這會直接拋出未捕獲的異常,并且catch代碼塊永遠(yuǎn)都不會被執(zhí)行:

try {
 setTimeout(function() {
  throw new Error("here");
 }, 10);
} catch(e) {
 console.log(e);
}

這就是為什么在Node.js中,每步豆芽正確進行錯誤處理的原因。

添加uncatchException處理器

若添加了 uncatchException 處理器,當(dāng)函數(shù)拋出錯誤時,進程也不會退出。

process.on("uncatchException", function(e) {
 console.log(e);
 process.exit(1);
});

總結(jié)

以上就是防止Node.js中錯誤導(dǎo)致進程阻塞的辦法的全部內(nèi)容,希望對大家使用Node.js有所幫助。

相關(guān)文章

最新評論