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

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

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

前言

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

Node.js這樣處理,是因?yàn)樵诎l(fā)生未被捕獲的錯(cuò)誤時(shí),進(jìn)程的狀態(tài)就不確定。之后也就無(wú)法正常工作了。如果錯(cuò)誤始終不處理的話,就回一直拋出意料之外的錯(cuò)誤,這樣不利于調(diào)試。

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

一. try-catch

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

例如:

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

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

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

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

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

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

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

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

添加uncatchException處理器

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

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

總結(jié)

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

相關(guān)文章

最新評(píng)論