国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Node.js學習之路15——Domain捕獲錯誤

Cc_2011 / 3463人閱讀

摘要:可以通過監聽該對象的事件并指定事件回調函數的方法來實現當捕捉到錯誤時的處理。

1. 捕獲錯誤

try...catch機制不能捕獲異步方法拋出的錯誤

uncaughtException時間可以捕獲任何未被處理的錯誤,但是可能會引起內存泄漏等情況

2. domain模塊獲取錯誤

使用domian模塊中的create方法創建一個domain對象,var domain = domain.create(),create方法沒有任何參數,該方法返回被創建的Domain對象。該對象是一個繼承了EventEmitter類的實例對象,當該對象捕獲到任何錯誤時,觸發該對象的error事件。可以通過監聽該對象的error事件并指定事件回調函數的方法來實現當捕捉到錯誤時的處理。domain.on("error", function(err){})

domain模塊中,為Domain對象定義了一個name屬性值,可以使用該屬性值來設置或獲取該Domain對象的名稱。

在Domain對象被創建后,需要指定該對象所監聽的代碼,我們需要將這些代碼書寫在一個函數中,并且使用Domain對象的run方法指定Domain對象監聽該函數中的代碼。當這些代碼觸發任何錯誤時,將被Domain對象捕獲。Domain對象的run方法的指定方法如下domain.run(fn)

Domain對象的run方法中,使用一個參數,參數值為一個函數,當該函數中觸發任何錯誤時,將被Domain對象捕獲。

Domain對象不再需要的時候,可以銷毀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("服務器端接收客戶端請求時發生以下錯誤:")
        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")

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/92955.html

相關文章

  • Node.js學習之路17——DNS模塊介紹

    摘要:在中,提供模塊,以實現域名查找及域名解析的處理。方法用于將一個域名解析為一組記錄。記錄是域名服務器記錄,用來指定該域名由哪個服務器進行解析。回調函數有兩個參數,是域名解析失敗時觸發的錯誤對象,參數為一個數組,其中存放了所有獲取到的記錄。 1. DNS 在Node.js中,提供DNS模塊,以實現域名查找及域名解析的處理。 在DNS模塊中,提供了三個主方法及一系列便捷方法。 reso...

    roadtogeek 評論0 收藏0
  • Node.js 指南(域模塊剖析)

    摘要:快速檢查可能告訴我們,簡單地從的域處理程序拋出將允許然后捕獲異常并執行其自己的錯誤處理程序,雖然情況并非如此,檢查后,你會看到堆棧只包含。 域模塊剖析 可用性問題 隱式行為 開發人員可以創建新域,然后只需運行domain.enter(),然后,它充當將來拋出者無法觀察到的任何異常的萬能捕捉器,允許模塊作者攔截不同模塊中不相關代碼的異常,防止代碼的發起者知道自己的異常。 以下是一個間接鏈...

    ymyang 評論0 收藏0
  • Node.js學習之路19——punycode模塊與os模塊

    摘要:模塊轉換為編碼模塊內部使用類庫以將域名從地方語言所采用的各種編碼轉換為可用于服務器的編碼因為操作系統的核心都是英文服務器的解析也是由英文代碼交換所以服務器并不支持直接的使用地方語言的域名解析所有地方語言域名的解析都需要轉成編碼然后由服務器解 1. punycode punycode模塊轉換為punycode編碼 punycode模塊內部使用punycode.js類庫,以將域名從地方...

    xumenger 評論0 收藏0
  • Node.js 全局對象 process

    摘要:是一個全局變量,對象的屬性。的源碼啟動進程,評估時返回函數失敗。調用監聽器回調函數時會將的值作為唯一參數傳入。信號列表詳見標準的信號名,如等。返回一個對象,描述了進程所用的內存狀況,單位為字節。一旦當前事件循環結束,調用回調函數。 process是一個全局變量,global對象的屬性。它的作用是描述當前Node.js進程狀態的對象,提供了一個與操作系統的簡單接口。通常在你寫本地命令程序...

    JasonZhang 評論0 收藏0
  • 高質量 Node.js 微服務的編寫和部署

    摘要:編寫代碼的開發人員必須負責代碼的生產部署。構建和部署鏈需要重大更改,以便為微服務環境提供正確的關注點分離。該對象會在之后的時被這時的回調函數會被調用,并輸出。微服務部署及集成部署微服務時有一個原則一個容器中只放一個服務,可以使用編 前幾天在微信群做的一次分享,整理出來分享給大家,相關代碼請戳 https://github.com/Carrotzpc/docker_web_app sho...

    szysky 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<