首页 > 解决方案 > 如何“捕捉”console.error()?(所以标题)

问题描述

我包含了一个使用console.error()而不是throw.

因此,我的try...catch不起作用。而且因为它是第 3 方库,所以我无法更改他们的代码。

是否有(最好是优雅的)解决方法来“捕捉” a console.error()

标签: javascriptnode.js

解决方案


您无法捕获不会引发任何错误的东西。它看起来像一个拐杖,但您可以在下面的代码中覆盖您的 console.error 方法。但是不要忘记,在你覆盖了抛出错误的 console.error 之后!!!

console.errorWithoutExceptions = console.error;
console.error = (...messages) => {
    console.errorWithoutExceptions(...messages); 
    throw new Error(messages[0]);
}

// now you can use 
try {
   // your code
   console.error('test error');
} catch(e) {
   // process you error with message 'test error' here
}

// don't forget to restore previous console.error after using
console.error = console.errorWithoutExceptions;


推荐阅读