如何解除V8中的error.stack?
看来在第一次使用Error.prepareStackTrace
后, Error.prepareStackTrace
的输出被caching:
try { null(); } catch (error) { Error.prepareStackTrace = () => { return 'Hello, World!'; }; console.log('#0', error.stack); Error.prepareStackTrace = () => { return 'Hello, Stack Trace!'; }; console.log('#1', error.stack); }
电stream输出:
#0 Hello, World! #1 Hello, World!
预期产出:
#0 Hello, World! #1 Hello, Stack Trace!
如何uncache error.stack
值以允许进一步使用Error. prepareStackTrace
Error. prepareStackTrace
? 没有这个,我不能保证当我有error
,其他人还没有把堆栈倒掉。
这个怎么样:
var getStackTrace; Error.prepareStackTrace = () => { return { toString: () => getStackTrace() }; }; var exception; try { null(); } catch (e) { exception = e; } getStackTrace = () => "Hello World."; console.log(exception.stack); getStackTrace = () => "Hello Stack Trace."; console.log(exception.stack);