首页 > node.js的domain异常捕获是否能在异步过程中传递出错的上下文数据到监听器?

node.js的domain异常捕获是否能在异步过程中传递出错的上下文数据到监听器?

本人新学 node.js,遇到一些问题,折腾了很久,没有搞出来。

主要是异常捕获的问题。一般同步的会用 try、catch 来捕获,但是有时候遇到异步回调,这时候 try、catch 就不大管用,查了一些文档和资料,知道有个 domain 能够解决捕获异步异常的方法。尽管能捕获异常,但是不知道怎么把上下文的数据传递到 domain 的监听器里去?希望有人能指点下,不胜感激。

这里是写的代码,异常是由更底层的代码抛上来的,产生异常的时候应该是 res.on('data',func),由于是 node.js 底层代码,我不能进行代码操作,只能想办法在自己这一层异常捕获,但是有些数据,比如 content 方法中的 url 需要遇到异常时,进行对应的操作,所以需要将 url 传递到 on 的侦听器。但是这一步想了很多方法都做不到,希望有人能提供一些建议,或者方向。

     //注册一个错误消息器
       var d = $domain.create();
       d.on("error",function(err){
           console.info(err);
       });
     /**

    * 获取请求内容
    */
       this.content = function(url, method) {
               // 发送请求
               var req = http.request(urlInfo, function(res) {
                   res.setEncoding("utf-8");
                   var content = "";
                   res.on('data', function(data) {
                       content += data;
                   });
                   res.on('end', function() {
                       if (res.statusCode && RES_SUCCESS_CODE === res.statusCode) {
                           dosomething();
                       } else {
                           dootherthing();
                       }
                   });
                   d.add(res);
               });
               req.end();
           }
           d.run(onListener);
【热门文章】
【热门文章】