create-custom-error.js 477 B

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