333
schangxiang@126.com
2025-09-19 18966e02fb573c7e2bb0c6426ed792b38b910940
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
# make-error [![Build Status](https://img.shields.io/travis/JsCommunity/make-error/master.svg)](http://travis-ci.org/JsCommunity/make-error)
 
> Make your own error types!
 
 
## Features
 
- Compatible Node & browsers
- `instanceof` support
- `error.name` & `error.stack` support
- compatible with [CSP](https://en.wikipedia.org/wiki/Content_Security_Policy) (i.e. no `eval()`)
 
## Installation
 
### Node & [Browserify](http://browserify.org/)/[Webpack](https://webpack.js.org/)
 
Installation of the [npm package](https://npmjs.org/package/make-error):
 
```
> npm install --save make-error
```
 
Then require the package:
 
```javascript
var makeError = require('make-error');
```
 
### Browser
 
You can directly use the build provided at [unpkg.com](https://unpkg.com):
 
```html
<script src="https://unpkg.com/make-error@1/dist/make-error.js"></script>
```
 
## Usage
 
### Basic named error
 
```javascript
var CustomError = makeError('CustomError')
 
// Parameters are forwarded to the super class (here Error).
throw new CustomError('a message')
```
 
### Advanced error class
 
```javascript
function CustomError (customValue) {
  CustomError.super.call(this, 'custom error message')
 
  this.customValue = customValue
}
makeError(CustomError)
 
// Feel free to extend the prototype.
CustomError.prototype.myMethod = function CustomError$myMethod () {
  console.log('CustomError.myMethod (%s, %s)', this.code, this.message)
}
 
//-----
 
try {
  throw new CustomError(42)
} catch (error) {
  error.myMethod()
}
```
 
### Specialized error
 
```javascript
var SpecializedError = makeError('SpecializedError', CustomError);
 
throw new SpecializedError(42);
```
 
### Inheritance
 
> Best for ES2015+.
 
```javascript
import {BaseError} from 'make-error'
 
class CustomError extends BaseError {
  constructor () {
    super('custom error message')
  }
}
```
 
## Related
 
- [make-error-cause](https://www.npmjs.com/package/make-error-cause): Make your own error types, with a cause!
 
## Contributions
 
Contributions are *very* welcomed, either on the documentation or on
the code.
 
You may:
 
- report any [issue](https://github.com/JsCommunity/make-error/issues)
  you've encountered;
- fork and create a pull request.
 
## License
 
ISC © [Julien Fontanet](http://julien.isonoe.net)