Handling specific errors in JavaScript (think exceptions)

error-handling, javascript

Solution

To create custom exceptions, you can inherit from the `Error` object:

function SpecificError () {

}

SpecificError.prototype = new Error();

// ...
try {
  throw new SpecificError;
} catch (e) {
  if (e instanceof SpecificError) {
   // specific error
  } else {
    throw e; // let others bubble up
  }
}

A minimalistic approach, without inheriting from `Error`, could be throwing a simple object having a name and a message properties:

function throwSpecificError() {
  throw {
    name: 'SpecificError',
    message: 'SpecificError occurred!'
  };
}


// ...
try {
  throwSpecificError();
} catch (e) {
  if (e.name == 'SpecificError') {
   // specific error
  } else {
    throw e; // let others bubble up
  }
}

Problem

How would you implement different types of errors, so you'd be able to catch specific ones and let others bubble up..? One way to achieve this is to modify the prototype of the `Error` object: ``` Error.prototype.sender = ""; function throwSpecificError() { var e = new Error(); e.sender = "specific"; throw e; } ``` Catch specific error: ``` try { throwSpecificError(); } catch (e) { if (e.sender !== "specific") throw e; // handle specific error } ``` Have you guys got any alternatives?

Original source

Related problems