What is make-error-cause?
The make-error-cause npm package is designed to simplify the creation of custom error classes in JavaScript, while also allowing you to maintain the original error cause. This is particularly useful for error handling in complex applications where you need to preserve the stack trace and context of the original error.
What are make-error-cause's main functionalities?
Creating Custom Error Classes
This feature allows you to create custom error classes that can encapsulate an original error. The custom error class extends from `makeErrorCause.BaseError`, which helps in maintaining the original error's stack trace and context.
const makeErrorCause = require('make-error-cause');
class MyCustomError extends makeErrorCause.BaseError {
constructor(message, cause) {
super(message, cause);
this.name = 'MyCustomError';
}
}
try {
throw new Error('Original error');
} catch (err) {
throw new MyCustomError('Custom error message', err);
}
Preserving Original Error Cause
This feature demonstrates how to preserve the original error cause when throwing a new custom error. This is useful for debugging and logging, as it provides a complete error stack trace.
const makeErrorCause = require('make-error-cause');
class DatabaseError extends makeErrorCause.BaseError {
constructor(message, cause) {
super(message, cause);
this.name = 'DatabaseError';
}
}
try {
throw new Error('Connection failed');
} catch (err) {
throw new DatabaseError('Database operation failed', err);
}
Other packages similar to make-error-cause
verror
The `verror` package provides a way to create and manage nested errors in JavaScript. It allows you to add context to errors and maintain the original error stack. Compared to `make-error-cause`, `verror` offers more features for error wrapping and context management.
error-ex
The `error-ex` package is used to create easily extensible error objects with additional properties. It allows you to add custom properties to errors and maintain the original error cause. While `error-ex` focuses on extensibility, `make-error-cause` is more focused on preserving the original error stack.
extendable-error
The `extendable-error` package provides a simple way to create custom error classes that extend the native Error class. It does not specifically focus on preserving the original error cause, making `make-error-cause` a better choice for scenarios where maintaining the original error context is crucial.
Make Error Cause
Make your own nested errors.
Features
- Compatible with node.js and browsers
- Works with
instanceof
- Output full stack trace with
fullStack(err)
- Automatic full stack traces with node.js (via
inspect()
) - Extends
make-error
Installation
npm install make-error-cause --save
Usage
import { BaseError, fullStack } from 'make-error-cause'
class CustomError extends BaseError {
constructor (message, cause) {
super(message, cause)
}
}
const error = new Error('Boom!')
const customError = new CustomError('Another boom!', error)
console.log(fullStack(error))
console.log(fullStack(customError))
console.log(customError instanceof Error)
Attribution
Inspired by verror
, and others, but created lighter and without core dependencies for browser usage.
Other references:
License
Apache 2.0