It's nice to be able to distinguish error types by classes. But it's a bit tricky to correctly create a custom error class in Node.js, so here is an example.
The example also shows how to add an extra parameter called extra
that will be stored as a property on the error.
var CustomError = require('./errors/custom-error');
function doSomethingBad() {
throw new CustomError('It went bad!', 42);
}
- Name appears once - less editing if you have to create lots of custom error classes
- Easy to subclass - just change the last line to inherit from another custom error class you created
- Correct stack trace - no extra stack frames, no double capturing of the stack trace
These are some things that I've seen in other proposed solutions that you should avoid.
Error.call(this)
- creates another error object (wasting a bunch of time) and doesn't touchthis
at allError.captureStackTrace(this, arguments.callee);
- works, butarguments.callee
is deprecated, so don't use itthis.stack = (new Error).stack
- this... I don't even...
@netmikey are you returning something from the constructor? If you are you shouldn't have to and it sounds like that's what the warning means.
By default an object called with the new keyword returns 'this'