/ Published in: JavaScript
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
function ErrorConstructor(constructorName) { var errorConstructor = function(message, fileName, lineNumber) { // don't directly name this function, .name is used by Error.prototype.toString if (this == window) return new arguments.callee(message, fileName, lineNumber); this.name = errorConstructor.name; this.message = message||""; this.fileName = fileName||location.href; if (!isNaN(+lineNumber)) this.lineNumber = +lineNumber; else this.lineNumber = 1; } errorConstructor.name = constructorName||Error.prototype.name; errorConstructor.prototype.toString = Error.prototype.toString; return errorConstructor; } Usage: ErrorConstructor([constructorName]) Note: If no constructorName is specified, the default of Error.prototype.name is used Usage for generated error constructor: errorConstructor([message[, location[, lineNumber]]) Examples: var SecurityError = ErrorConstructor("Security Error"), MarkupError = ErrorConstructor("(X)HTML Markup Error"); //these will both throw a SecurityError starting with "Security Error on line 83:" var xss_error = "Possible XSS Vector\n\ JSON XHR response parsed with eval()\n\ Recommended fix: Parse JSON with JSON.parse"; throw new SecurityError(xss_error, "/js/searchResultsJSONloader.js", 83); throw SecurityError(xss_error, "/js/searchResultsJSONloader.js", 83); //these will both throw the following MarkupError: //"(X)HTML Markup Error on line 1: Invalid DOCTYPE" throw new MarkupError("Invalid DOCTYPE"); throw MarkupError("Invalid DOCTYPE");