美文网首页
Node.js中的错误处理

Node.js中的错误处理

作者: 27亿光年中的小小尘埃 | 来源:发表于2020-01-08 22:49 被阅读0次

    使用domain模块处理错误

    domain模块概述

    从Node.js v0.8版开始,提供domain模块。该模块中提供一个Domain对象,当应用程序在任何时刻抛出错误时可以通知该对象,然后由该对象来统一处理这些错误。

    使用domain模块处理错误实例

    var http = require('http');
    var domain = require('domain');
    http.createServer(function (req, res) {
        var d = domain.create();
        d.once('error', function(err) {
            res.writeHead(200, {'Content-Type': 'text/html'});
            res.write('<head><meta charset="utf-8"/></head>');
            res.write('服务器端接收客户端请求时发生以下错误:');
            res.end(err.message);
        });
        d.run(function() {
            if(req.url!=="/favicon.ico"){
                noneexist();
                res.writeHead(200, {'Content-Type': 'text/html'});
                res.write('<head><meta charset="utf-8"/></head>');
                res.end('你好\n');
            }
        });
    }).listen(1337, "127.0.0.1");
    

    创建并使用Domain对象

    在实现这一处理之前,首先需要使用domain模块中的create方法创建一个Domain对象

    var domain = domain.create();
    

    create方法没有任何参数,该方法返回被创建的Domain对象。该对象是一个继承了EventEmitter类的实例对象,当该对象捕获到任何错误时,触发该对象的error事件。可以通过监听该对象的error事件并指定事件回调函数的方法来实现当捕捉到错误时的处理。

    监听错误信息

    domain.on('error', function(err) {
        //事件回调函数代码略
    });
    

    捕获指定方法的错误信息

    在Domain对象被创建后,需要指定该对象所监听的代码,我们需要将这些代码书写在一个函数中,并且使用Domain对象的run方法指定Domain对象监听该函数中的代码。当这些代码触发任何错误时,将被Domain对象捕获。Domain对象的run方法的指定方法如下所示(代码中的domain代表一个Domain对象)。

    domain.run(fn)
    

    在Domain对象的run方法中,使用一个参数,参数值为一个函数。当该函数中触发任何错误时,将被Domain对象捕获。

    显性绑定

    domain.add(emitter)
    

    取消意绑定对象对象的绑定

    domain.remove(emitter)
    

    绑定回调函数

    domain.bind(callback
    

    拦截回调函数

    domain.intercept(callback)
    

    弹出domain堆栈

    domain.exit()
    

    在使用了Domain对象的exit方法后,该对象将不能再捕获任何错误。

    推入domain堆栈

    domain.enter();
    

    销毁domain对象

    d.dispose();
    

    相关文章

      网友评论

          本文标题:Node.js中的错误处理

          本文链接:https://www.haomeiwen.com/subject/jqjeactx.html