在本机错误对象调用函数's结构

Call function at native Error object's construction

本文关键字:结构 函数 本机 错误 对象 调用      更新时间:2023-09-26

在以下代码示例中:

var oldConstructor = Error.constructor;
Error.constructor = function() {
    console.log('Constructor');
    oldConstructor.apply(null, arguments);
};
var a = new Error('ok');

为什么不打印'Constructor'

  • 如何在每次调用本机Error对象的构造函数时运行函数

我试图实现的目标是,与其在代码库中使用的不同模块(mongoose、express.js等)的回调链上冒泡Errors,我只希望每个错误都发出一个事件或调用一个方法(可能使用Observer模式)。

我尝试用这种方式来解决问题,而不是修改每一行代码来创建一个新的Error对象。

提前感谢!

Error.constructor是对Function函数的引用,因为Error是一个函数,函数由Function构造。

你本可以做到:

var oldError = Error;
Error = function( arg ) {
    console.log('Constructor');
    return new oldError( arg );
};

但这根本不能保证工作,因为如果模块在代码之前运行,它们可能已经存储了对Error构造函数的本地引用。

您可以使用uncaughtexception事件