1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| module.exports = function createCustomError(name, message) {
| // use Object.create(), because some VMs prevent setting line/column otherwise
| // (iOS Safari 10 even throws an exception)
| var error = Object.create(SyntaxError.prototype);
| var errorStack = new Error();
|
| error.name = name;
| error.message = message;
|
| Object.defineProperty(error, 'stack', {
| get: function() {
| return (errorStack.stack || '').replace(/^(.+\n){1,3}/, name + ': ' + message + '\n');
| }
| });
|
| return error;
| };
|
|