防止Node.js中錯(cuò)誤導(dǎo)致進(jìn)程阻塞的辦法
前言
在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有所幫助。
- 分析Node.js connect ECONNREFUSED錯(cuò)誤
- Nodejs Post請(qǐng)求報(bào)socket hang up錯(cuò)誤的解決辦法
- Node.js connect ECONNREFUSED錯(cuò)誤解決辦法
- 總結(jié)Node.js中的一些錯(cuò)誤類型
- NodeJS處理Express中異步錯(cuò)誤
- Node.js下自定義錯(cuò)誤類型詳解
- Node.js中防止錯(cuò)誤導(dǎo)致的進(jìn)程阻塞的方法
- 使用Raygun對(duì)Node.js應(yīng)用進(jìn)行錯(cuò)誤處理的方法
- Node錯(cuò)誤處理筆記之挖坑系列教程
相關(guān)文章
基于uniapp與node.js實(shí)現(xiàn)的微信授權(quán)登錄功能實(shí)例
前端一直是一塊充滿驚喜的土地,不僅是那些富有創(chuàng)造性的頁(yè)面,還有那些驚贊的效果及不斷推出的新技術(shù),下面這篇文章主要給大家介紹了關(guān)于如何基于uniapp與node.js實(shí)現(xiàn)的微信授權(quán)登錄功能的相關(guān)資料,需要的朋友可以參考下2023-05-05node使用require?mkdirp創(chuàng)建文件夾示例
這篇文章主要為大家介紹了node使用require?mkdirp創(chuàng)建文件夾示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08深入理解Node.js 事件循環(huán)和回調(diào)函數(shù)
這篇文章主要介紹了深入理解Node.js 事件循環(huán)和回調(diào)函數(shù),詳細(xì)的介紹Node.js 事件循環(huán)和Node.js回調(diào)函數(shù),需要學(xué)習(xí)的可以參考一下。2016-11-11node.js解決獲取圖片真實(shí)文件類型的問(wèn)題
這篇文章主要介紹了node.js解決獲取圖片真實(shí)文件類型的問(wèn)題,本文根據(jù)二進(jìn)制流及文件頭獲取文件類型mime-type,然后讀取文件二進(jìn)制的頭信息,獲取其真實(shí)的文件類型,需要的朋友可以參考下2014-12-12使用Node.js實(shí)現(xiàn)一個(gè)簡(jiǎn)單的FastCGI服務(wù)器實(shí)例
這篇文章主要介紹了使用Node.js實(shí)現(xiàn)一個(gè)簡(jiǎn)單的FastCGI服務(wù)器實(shí)例,也可以作為一個(gè)比較詳細(xì)的Node.js服務(wù)器創(chuàng)建教程,需要的朋友可以參考下2014-06-06利用nodejs讀取圖片并將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換成base64格式
這篇文章主要介紹了利用nodejs讀取圖片并將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換成base64格式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08150行Node.js實(shí)現(xiàn)的dns代理工具
這篇文章主要介紹了150行Node.js實(shí)現(xiàn)的dns代理工具,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08