Your code can be simplified a bit:
function InvalidModuleError(moduleName) {
this.message = "module '" + moduleName + "' doesn't export any definitions";
}
InvalidModuleError.prototype = new Error();
InvalidModuleError.prototype.name = 'InvalidModuleError';
function DuplicateModuleError(moduleName) {
this.message = "module '" + moduleName + "' is already defined";
}
DuplicateModuleError.prototype = new Error();
DuplicateModuleError.prototype.name = 'DuplicateModuleError';
But if you want to have lots of custom exceptions, better use
function newModuleError(errorName, message) {
var moduleError = function(moduleName) {
this.message = message.replace('%s', moduleName);
};
moduleError.prototype = new Error();
moduleError.prototype.name = errorName;
return moduleError;
};
var InvalidModuleError = newModuleError('InvalidModuleError', "module '%s' doesn't export any definitions"),
DuplicateModuleError = newModuleError('DuplicateModuleError', "module '%s' is already defined");
To throw them:
throw new InvalidModuleError("moduleName1");
throw new DuplicateModuleError("moduleName2");