/** * Represents an error that is thrown when the calling a pure virtual method. * @class * @extends {Error} */ export class VirtualMethodNotImplementedError extends Error { /** @constructor */ constructor() { super('virtual method not implemented.'); } }; /** * Represents an error that is thrown when called a function with invalid arguments. * @class * @extends {Error} */ export class InvalidArgumentError extends Error { /** @constructor */ constructor(name, reason) { super(`argument ${name} is invalid: ${reason}.`); } };