Node.js中防止錯(cuò)誤導(dǎo)致的進(jìn)程阻塞的方法
在Node.js中,當(dāng)某個(gè)回調(diào)函數(shù)發(fā)生了錯(cuò)誤,整個(gè)進(jìn)程都會崩潰,影響后面的代碼執(zhí)行。
Node.js這樣處理,是因?yàn)樵诎l(fā)生未被捕獲的錯(cuò)誤時(shí),進(jìn)程的狀態(tài)就不確定。之后也就無法正常工作了。如果錯(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不能捕獲未來執(zhí)行函數(shù)錯(cuò)誤
要捕獲未來才執(zhí)行到的函數(shù)所拋出的錯(cuò)誤時(shí)不可能的。這會直接拋出未捕獲的異常,并且catch代碼塊永遠(yuǎn)都不會被執(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)程也不會退出。
process.on("uncatchException", function(e) {
console.log(e);
process.exit(1);
});
以上所述是小編給大家介紹的Node.js中防止錯(cuò)誤導(dǎo)致的進(jìn)程阻塞的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
Node使用Puppeteer監(jiān)聽并打印網(wǎng)頁的接口請求
Puppeteer 是一個(gè) Node 庫,它提供了高級的 API 來通過 DevTools 協(xié)議控制 Chrome 或 Chromium,本文我們就來看看如何使用Puppeteer監(jiān)聽并打印網(wǎng)頁的接口請求吧2025-04-04
node如何將package.json中的包降為低版本或者升級為高版本
比如現(xiàn)在你用某個(gè)包的當(dāng)前版本,但是你安裝的版本高了,那么你應(yīng)該這么做,首先刪除node項(xiàng)目中的node_modules目錄,防止安裝時(shí)的包不一致,下面給大家介紹node將package.json中的包降為低版本或者升級為高版本的方法,感興趣的朋友一起看看吧2023-11-11
nodejs實(shí)例解析(輸出hello world)
本文主要介紹nodejs實(shí)例解析:輸出hello world的完整過程。具有一定的參考價(jià)值,下面跟著小編一起來看下吧2017-01-01
Node.js和Vue的安裝與配置超詳細(xì)步驟(推薦)
使用VUE前端框架開發(fā),需要安裝Node.js和Vue.js,這篇文章主要給大家介紹了關(guān)于Node.js和Vue的安裝與配置超詳細(xì)步驟的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01
基于node打包可執(zhí)行文件工具_(dá)Pkg使用心得分享
下面小編就為大家分享一篇基于node打包可執(zhí)行文件工具_(dá)Pkg使用心得分享,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01
NestJS開發(fā)核心概念Providers類基本用法詳解
這篇文章主要為大家介紹了NestJS開發(fā)核心概念Providers類基本用法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
express結(jié)合nodejs開啟服務(wù)示例模版
這篇文章主要為大家展現(xiàn)了express結(jié)合nodejs開啟服務(wù)的代碼示例模版,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-04

