node.js的domain异常捕获是否能在异步过程中传递出错的上下文数据到监听器?
发布于 10 年前 作者 g080166 2543 次浏览 最后一次编辑是 8 年前
   本人新学node.js,遇到一些问题,折腾了很久,没有搞出来。

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

   这里是写的代码,异常是由更底层的代码抛上来的,产生异常的时候应该是res.on('data',func),由于是nodejs底层代码,我不能进行代码操作,只能想办法在自己这一层异常捕获,但是有些数据,比如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);

回到顶部