Node.js中防止錯誤導(dǎo)致的進(jìn)程阻塞的方法
在Node.js中,當(dāng)某個回調(diào)函數(shù)發(fā)生了錯誤,整個進(jìn)程都會崩潰,影響后面的代碼執(zhí)行。
Node.js這樣處理,是因?yàn)樵诎l(fā)生未被捕獲的錯誤時,進(jìn)程的狀態(tài)就不確定。之后也就無法正常工作了。如果錯誤始終不處理的話,就回一直拋出意料之外的錯誤,這樣不利于調(diào)試。
防止錯誤導(dǎo)致的進(jìn)程阻塞的方法主要有如下兩種:
一. try-catch
try-catch允許進(jìn)行異常捕獲,并讓代碼繼續(xù)執(zhí)行下去:
例如:
當(dāng)函數(shù)拋出錯誤時,代碼就停止執(zhí)行了:
(function() {
var a = 0;
a();
console.log("get here."); // 不執(zhí)行
})();
使用try-catch進(jìn)行錯誤處理后,代碼仍可繼續(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中,每步豆芽正確進(jìn)行錯誤處理的原因。
添加uncatchException處理器
若添加了 uncatchException 處理器,當(dāng)函數(shù)拋出錯誤時,進(jìn)程也不會退出。
process.on("uncatchException", function(e) {
console.log(e);
process.exit(1);
});
以上所述是小編給大家介紹的Node.js中防止錯誤導(dǎo)致的進(jìn)程阻塞的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
在windows上用nodejs搭建靜態(tài)文件服務(wù)器的簡單方法
這篇文章主要介紹了在windows上用nodejs搭建靜態(tài)文件服務(wù)器的簡單方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-08-08
Node.js基礎(chǔ)入門之path模塊,url模塊,http模塊使用詳解
這篇文章主要為大家介紹了Node.js中的三個模塊(path、url、http)的使用詳解,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-03-03
Windows上node.js的多版本管理工具用法實(shí)例分析
這篇文章主要介紹了Windows上node.js的多版本管理工具用法,結(jié)合實(shí)例形式分析了Windows平臺上node.js多版本管理工具nvm-windows的相關(guān)使用技巧,需要的朋友可以參考下2019-11-11
Nodejs監(jiān)控事件循環(huán)異常示例詳解
這篇文章主要給大家介紹了關(guān)于Nodejs監(jiān)控事件循環(huán)異常的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Nodejs具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
關(guān)于npm install過程失敗的幾種處理方式
這篇文章主要介紹了關(guān)于npm install過程失敗的幾種處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06
node.js實(shí)現(xiàn)逐行讀取文件內(nèi)容的代碼
這篇文章主要介紹了node.js實(shí)現(xiàn)逐行讀取文件內(nèi)容的代碼,本文還介紹了一個node.js的按行讀取內(nèi)容開源項(xiàng)目,需要的朋友可以參考下2014-06-06

