防止Node.js中錯誤導致進程阻塞的辦法
前言
在Node.js中,當某個回調(diào)函數(shù)發(fā)生了錯誤,整個進程都會崩潰,影響后面的代碼執(zhí)行。
Node.js這樣處理,是因為在發(fā)生未被捕獲的錯誤時,進程的狀態(tài)就不確定。之后也就無法正常工作了。如果錯誤始終不處理的話,就回一直拋出意料之外的錯誤,這樣不利于調(diào)試。
防止錯誤導致的進程阻塞的方法主要有如下兩種:
一. try-catch
try-catch允許進行異常捕獲,并讓代碼繼續(xù)執(zhí)行下去:
例如:
當函數(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代碼塊永遠都不會被執(zhí)行:
try {
setTimeout(function() {
throw new Error("here");
}, 10);
} catch(e) {
console.log(e);
}
這就是為什么在Node.js中,每步豆芽正確進行錯誤處理的原因。
添加uncatchException處理器
若添加了 uncatchException 處理器,當函數(shù)拋出錯誤時,進程也不會退出。
process.on("uncatchException", function(e) {
console.log(e);
process.exit(1);
});
總結(jié)
以上就是防止Node.js中錯誤導致進程阻塞的辦法的全部內(nèi)容,希望對大家使用Node.js有所幫助。
相關文章
基于uniapp與node.js實現(xiàn)的微信授權登錄功能實例
前端一直是一塊充滿驚喜的土地,不僅是那些富有創(chuàng)造性的頁面,還有那些驚贊的效果及不斷推出的新技術,下面這篇文章主要給大家介紹了關于如何基于uniapp與node.js實現(xiàn)的微信授權登錄功能的相關資料,需要的朋友可以參考下2023-05-05
node使用require?mkdirp創(chuàng)建文件夾示例
這篇文章主要為大家介紹了node使用require?mkdirp創(chuàng)建文件夾示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-08-08
深入理解Node.js 事件循環(huán)和回調(diào)函數(shù)
這篇文章主要介紹了深入理解Node.js 事件循環(huán)和回調(diào)函數(shù),詳細的介紹Node.js 事件循環(huán)和Node.js回調(diào)函數(shù),需要學習的可以參考一下。2016-11-11
使用Node.js實現(xiàn)一個簡單的FastCGI服務器實例
這篇文章主要介紹了使用Node.js實現(xiàn)一個簡單的FastCGI服務器實例,也可以作為一個比較詳細的Node.js服務器創(chuàng)建教程,需要的朋友可以參考下2014-06-06
利用nodejs讀取圖片并將二進制數(shù)據(jù)轉(zhuǎn)換成base64格式
這篇文章主要介紹了利用nodejs讀取圖片并將二進制數(shù)據(jù)轉(zhuǎn)換成base64格式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08

