node.js - nodejs 错误处理方式
高洛峰
高洛峰 2017-04-17 15:59:51
[Node.js讨论组]

现在我使用一个第三方的模块,一遇到错误,直接弹出崩溃异常。

我看了他的代码都是

self.emit('error', makeError(code, text));

function makeError(code, text) {
  var err = new Error(text);
  err.code = code;
  return err;
}

self.emit('error' 这个东西,我没发现哪里定义,是不是默认就带有?

现在我不希望遇到一个错误,程序立马崩溃,我希望使用

console.log(err);

的方式可以输出错误信息,程序仍然可以运行。在不改动人家源码的情况下,怎么实现呢?


我知道一个东西可以屏蔽不弹出报错。

process.on('uncaughtException', function(err) {
    console.log(err);
    console.error('Error caught in uncaughtException event:', err);
});

但我不希望整个程序都放这个东西,有些未知的错误,我还是想弹出这个的。


我自己解决了,贴出答案,方便后来者:

使用domain

var domain = require('domain');
var d = domain.create();
d.run(function () {
    setTimeout(function () {
        throw new Error('async error'); // 抛出一个异步异常
    }, 1000);
});

d.on('error', function (err) {
    console.log('catch err:', err); // 这里可以捕获异步异常
});

参考资料:http://www.infoq.com/cn/artic...

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(0)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号