Javascript exceptions
From wikinotes
Documentation
MDN: control flow and error handling https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Control_flow_and_error_handling MDN: error types https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error
Basics
try { throw new TypeError("expected Integer") } catch(err) { if (err instanceOf EvalError) { // ... } else if (err instanceOf RangeError) { // ... } } finally { }
Custom Errors
You can throw any type of object that you like (Object, String, ...) in javascript.
but if you'd like to obtain stracktraces and for the object to be typed as an error:ecmascript 6+ (w/o transpiler)
class CustomError extends Error { /* ... */}
ecmascript <6
stack-overflow// source: https://stackoverflow.com/questions/464359/custom-exception-type function InvalidArgumentException(message) { this.message = message; // Use V8's native method if available, otherwise fallback if ("captureStackTrace" in Error) Error.captureStackTrace(this, InvalidArgumentException); else this.stack = (new Error()).stack; } InvalidArgumentException.prototype = Object.create(Error.prototype); InvalidArgumentException.prototype.name = "InvalidArgumentException"; InvalidArgumentException.prototype.constructor = InvalidArgumentException;MDN
function CustomError(message, fileName, lineNumber) { var instance = new Error(message, fileName, lineNumber); instance.name = 'CustomError'; Object.setPrototypeOf(instance, Object.getPrototypeOf(this)); if (Error.captureStackTrace) { Error.captureStackTrace(instance, CustomError); } return instance; } CustomError.prototype = Object.create( Error.prototype, { constructor: { value: Error, enumerable: false, writable: true, configurable: true } } ); if (Object.setPrototypeOf){ Object.setPrototypeOf(CustomError, Error); } else { CustomError.__proto__ = Error; }