3
我正在定義像下面的代碼一樣的自定義JavaScript異常。這是正確的嗎?有沒有更短的路?更簡短的定義自定義JavaScript異常的方法?
function InvalidModuleError(moduleName) {
TypeError.apply(this);
this.message = "module '" + moduleName + "' doesn't export any definitions";
this.name = 'InvalidModuleError';
};
InvalidModuleError.prototype = Object.create(TypeError.prototype);
function DuplicateModuleError(moduleName) {
TypeError.apply(this);
this.message = "module '" + moduleName + "' is already defined";
this.name = 'DuplicateModuleError';
};
DuplicateModuleError.prototype = Object.create(TypeError.prototype);
編輯:最終,奧里奧爾的建議後,我做了產生異常,看起來像這樣的功能:
function makeException(parentObject, parentClass, name, message) {
var shortName = name.split('.');
shortName = shortName[shortName.length - 1];
parentObject[shortName] = function() {
this.message = (typeof message === 'function') ? message.apply(null, arguments) : message;
};
parentObject[shortName].prototype = Object.create(parentClass.prototype, {'name': {'value': name}});
}
我定義例外。看來,沒有原型繼承('MyException.prototype = Object.create(BaseException.prototype);')異常不會正確地打印在瀏覽器的控制檯(也許我做錯了什麼)。 – HankMoody
@PythonFanboy我已經添加了'toString'方法來顯示它。 – Oriol
@PythonFanboy我已經更新它來拋出真正的錯誤,而不是使用'.toString'的對象 – Oriol