39

I'm using try catch on a node.js script:

try {} catch (err) {console.log(err)}

I get an output like this:

{ 
  stack: [Getter/Setter],
  arguments: [ 'undefined' ],
  type: 'called_non_callable',
  message: [Getter/Setter]
}

Is there an easy way to make this more informative? Include line numbers and function names and such?

1 Answer 1

82

Those [Getter/Setter] members indicate further information available on the error object. You can easily dump the contents of those getters/setters using a small helper function (very trivial implementation, further refinement is up to you)

function dumpError(err) {
  if (typeof err === 'object') {
    if (err.message) {
      console.log('\nMessage: ' + err.message)
    }
    if (err.stack) {
      console.log('\nStacktrace:')
      console.log('====================')
      console.log(err.stack);
    }
  } else {
    console.log('dumpError :: argument is not an object');
  }
}

try {
  not_defined.function_call();
} catch(err) {
  dumpError(err);
}

You could also extend the Object.prototype for improved accessibility (so you could use err.dumpError()), although extending Object.prototype bears the risk of overwriting existing functionality.

Sign up to request clarification or add additional context in comments.

2 Comments

Real life changer, ty
How to get a deeper level err.stack?

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.