防止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);
});
總結(jié)
以上就是防止Node.js中錯誤導(dǎo)致進(jìn)程阻塞的辦法的全部內(nèi)容,希望對大家使用Node.js有所幫助。
相關(guān)文章
使用NVM下載Node.js管理多版本的詳細(xì)教程(附圖文)
在開發(fā)過程會一直遇到nodejs的版本問題,直接安裝則只有一個版本,極其不方便,nvm則是用來管理nodejs的工具,可以通過nvm來安裝切換不同版本的nodejs,所以本文給大家介紹了使用NVM下載Node.js管理多版本的詳細(xì)教程,文中有詳細(xì)的圖文教程,需要的朋友可以參考下2025-04-04
教你用Node.js與Express建立一個GraphQL服務(wù)器
GraphQL是一種通過強(qiáng)類型查詢語言構(gòu)建api的新方法,下面這篇文章主要給大家介紹了關(guān)于用Node.js與Express建立一個GraphQL服務(wù)器的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12
在Node.js中實(shí)現(xiàn)關(guān)注列表和粉絲列表的方法示例
在社交網(wǎng)絡(luò)或者任何需要用戶交互的應(yīng)用中,實(shí)現(xiàn)關(guān)注和被關(guān)注的功能是非常常見的需求,本文將通過一個簡單的例子,展示如何在Node.js環(huán)境下實(shí)現(xiàn)用戶的關(guān)注列表和粉絲列表,需要的朋友可以參考下2024-04-04
node事件循環(huán)和process模塊實(shí)例分析
這篇文章主要介紹了node事件循環(huán)和process模塊,結(jié)合實(shí)例形式分析了node事件循環(huán)和process模塊具體功能、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2020-02-02
nodejs操作mysql實(shí)現(xiàn)增刪改查的實(shí)例
下面小編就為大家?guī)硪黄猲odejs操作mysql實(shí)現(xiàn)增刪改查的實(shí)例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05
Node.js中的http請求客戶端示例(request client)
本篇文章主要介紹了Node.js中的http請求客戶端示例(request client),具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05
詳解使用Typescript開發(fā)node.js項(xiàng)目(簡單的環(huán)境配置)
本篇文章主要介紹了詳解使用Typescript開發(fā)node.js項(xiàng)目(簡單的環(huán)境配置),非常具有實(shí)用價值,需要的朋友可以參考下2017-10-10

