摘要:可以通過(guò)監(jiān)聽(tīng)該對(duì)象的事件并指定事件回調(diào)函數(shù)的方法來(lái)實(shí)現(xiàn)當(dāng)捕捉到錯(cuò)誤時(shí)的處理。
1. 捕獲錯(cuò)誤
try...catch機(jī)制不能捕獲異步方法拋出的錯(cuò)誤
uncaughtException時(shí)間可以捕獲任何未被處理的錯(cuò)誤,但是可能會(huì)引起內(nèi)存泄漏等情況
2. domain模塊獲取錯(cuò)誤使用domian模塊中的create方法創(chuàng)建一個(gè)domain對(duì)象,var domain = domain.create(),create方法沒(méi)有任何參數(shù),該方法返回被創(chuàng)建的Domain對(duì)象。該對(duì)象是一個(gè)繼承了EventEmitter類的實(shí)例對(duì)象,當(dāng)該對(duì)象捕獲到任何錯(cuò)誤時(shí),觸發(fā)該對(duì)象的error事件??梢酝ㄟ^(guò)監(jiān)聽(tīng)該對(duì)象的error事件并指定事件回調(diào)函數(shù)的方法來(lái)實(shí)現(xiàn)當(dāng)捕捉到錯(cuò)誤時(shí)的處理。domain.on("error", function(err){})
domain模塊中,為Domain對(duì)象定義了一個(gè)name屬性值,可以使用該屬性值來(lái)設(shè)置或獲取該Domain對(duì)象的名稱。
在Domain對(duì)象被創(chuàng)建后,需要指定該對(duì)象所監(jiān)聽(tīng)的代碼,我們需要將這些代碼書(shū)寫(xiě)在一個(gè)函數(shù)中,并且使用Domain對(duì)象的run方法指定Domain對(duì)象監(jiān)聽(tīng)該函數(shù)中的代碼。當(dāng)這些代碼觸發(fā)任何錯(cuò)誤時(shí),將被Domain對(duì)象捕獲。Domain對(duì)象的run方法的指定方法如下domain.run(fn)
在Domain對(duì)象的run方法中,使用一個(gè)參數(shù),參數(shù)值為一個(gè)函數(shù),當(dāng)該函數(shù)中觸發(fā)任何錯(cuò)誤時(shí),將被Domain對(duì)象捕獲。
當(dāng)Domain對(duì)象不再需要的時(shí)候,可以銷毀d.dispose();
示例const http = require("http"); const domain = require("domain"); const process = require("process"); http.createServer(function (req, res) { var d = domain.create(); d.name = "domainOne"; d.once("error", function (err) { res.writeHead(200, { "Content-Type": "text/html" }); res.write("") res.write("服務(wù)器端接收客戶端請(qǐng)求時(shí)發(fā)生以下錯(cuò)誤:") res.end(err.message); }) d.run(function () { if (req.url !== "/favicon.ico") { notexitsfunction(); //this is an error res.writeHead(200, { "Content-Type": "text/html" }); res.write("") res.end("hello"); } process.nextTick(() => { setTimeout(() => { fs.open("./notExistFile.txt", "r", (err, fd) => { if (err) { throw err; } }) }) }) }) }).listen(2576, "localhost")
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/92955.html
摘要:在中,提供模塊,以實(shí)現(xiàn)域名查找及域名解析的處理。方法用于將一個(gè)域名解析為一組記錄。記錄是域名服務(wù)器記錄,用來(lái)指定該域名由哪個(gè)服務(wù)器進(jìn)行解析?;卣{(diào)函數(shù)有兩個(gè)參數(shù),是域名解析失敗時(shí)觸發(fā)的錯(cuò)誤對(duì)象,參數(shù)為一個(gè)數(shù)組,其中存放了所有獲取到的記錄。 1. DNS 在Node.js中,提供DNS模塊,以實(shí)現(xiàn)域名查找及域名解析的處理。 在DNS模塊中,提供了三個(gè)主方法及一系列便捷方法。 reso...
摘要:快速檢查可能告訴我們,簡(jiǎn)單地從的域處理程序拋出將允許然后捕獲異常并執(zhí)行其自己的錯(cuò)誤處理程序,雖然情況并非如此,檢查后,你會(huì)看到堆棧只包含。 域模塊剖析 可用性問(wèn)題 隱式行為 開(kāi)發(fā)人員可以創(chuàng)建新域,然后只需運(yùn)行domain.enter(),然后,它充當(dāng)將來(lái)拋出者無(wú)法觀察到的任何異常的萬(wàn)能捕捉器,允許模塊作者攔截不同模塊中不相關(guān)代碼的異常,防止代碼的發(fā)起者知道自己的異常。 以下是一個(gè)間接鏈...
摘要:模塊轉(zhuǎn)換為編碼模塊內(nèi)部使用類庫(kù)以將域名從地方語(yǔ)言所采用的各種編碼轉(zhuǎn)換為可用于服務(wù)器的編碼因?yàn)椴僮飨到y(tǒng)的核心都是英文服務(wù)器的解析也是由英文代碼交換所以服務(wù)器并不支持直接的使用地方語(yǔ)言的域名解析所有地方語(yǔ)言域名的解析都需要轉(zhuǎn)成編碼然后由服務(wù)器解 1. punycode punycode模塊轉(zhuǎn)換為punycode編碼 punycode模塊內(nèi)部使用punycode.js類庫(kù),以將域名從地方...
摘要:是一個(gè)全局變量,對(duì)象的屬性。的源碼啟動(dòng)進(jìn)程,評(píng)估時(shí)返回函數(shù)失敗。調(diào)用監(jiān)聽(tīng)器回調(diào)函數(shù)時(shí)會(huì)將的值作為唯一參數(shù)傳入。信號(hào)列表詳見(jiàn)標(biāo)準(zhǔn)的信號(hào)名,如等。返回一個(gè)對(duì)象,描述了進(jìn)程所用的內(nèi)存狀況,單位為字節(jié)。一旦當(dāng)前事件循環(huán)結(jié)束,調(diào)用回調(diào)函數(shù)。 process是一個(gè)全局變量,global對(duì)象的屬性。它的作用是描述當(dāng)前Node.js進(jìn)程狀態(tài)的對(duì)象,提供了一個(gè)與操作系統(tǒng)的簡(jiǎn)單接口。通常在你寫(xiě)本地命令程序...
摘要:編寫(xiě)代碼的開(kāi)發(fā)人員必須負(fù)責(zé)代碼的生產(chǎn)部署。構(gòu)建和部署鏈需要重大更改,以便為微服務(wù)環(huán)境提供正確的關(guān)注點(diǎn)分離。該對(duì)象會(huì)在之后的時(shí)被這時(shí)的回調(diào)函數(shù)會(huì)被調(diào)用,并輸出。微服務(wù)部署及集成部署微服務(wù)時(shí)有一個(gè)原則一個(gè)容器中只放一個(gè)服務(wù),可以使用編 前幾天在微信群做的一次分享,整理出來(lái)分享給大家,相關(guān)代碼請(qǐng)戳 https://github.com/Carrotzpc/docker_web_app sho...
閱讀 4026·2021-11-24 09:38
閱讀 3354·2021-11-15 11:37
閱讀 912·2021-11-12 10:36
閱讀 3641·2021-10-21 09:38
閱讀 3374·2021-09-28 09:36
閱讀 2521·2021-09-22 16:01
閱讀 5276·2021-09-22 15:09
閱讀 1357·2019-08-30 15:55