UNPKG

motion

Version:

motion - moving development forward

60 lines (47 loc) 1.42 kB
var stacktrace = require('stack-trace'); var oldStackTraceLimit = Error.stackTraceLimit; var oldCaptureStackTrace = Error.captureStackTrace; var oldError = Error; function BetterError(message) { console.log('in constructor'); oldError.captureStackTrace(this, BetterError); this.message = message; this.name = 'Error'; }; BetterError.prototype = Error.prototype; BetterError.stackTraceLimit = Error.stackTraceLimit; BetterError.captureStackTrace = Error.captureStackTrace; Error = BetterError; oldError.stackTraceLimit = Infinity; oldError.prepareStackTrace = function(_, frames) { console.log('preparing'); return frames; }; function capture(e) { if (typeof Error.prepareStackTrace !== 'undefined') { return stacktrace.parse(e); } var oldLimit = Error.stackTraceLimit; Error.stackTraceLimit = Infinity; var v8Handler = Error.prepareStackTrace; Error.prepareStackTrace = function(_, v8StackTrace) { return v8StackTrace; }; var v8StackTrace = e.stack; Error.prepareStackTrace = v8Handler; Error.stackTraceLimit = oldLimit; return v8StackTrace; }; function foo(a, b) { //console.log(stacktrace.get()[0].getFunction().arguments); var e = new Error('crap'); console.log(e.stack[0].getFunction().arguments); throw e; } function bar() { foo(1, 5); } try { bar() }catch(e) { var frames = e.stack; //console.log(frames); console.log(frames[0].getFunction().arguments); }