【发布时间】:2014-07-26 03:57:55
【问题描述】:
我开始向我的 javascript 对象添加错误处理,这些对象经常使用 jQuery。 我遇到的问题是,当我从 jQuery 方法中抛出新错误时——它没有被包装 jquery 调用的 catch 语句捕获——它只是抛出标准错误,但不会作为日志消息登录到控制台。这是一个例子:
var MyNamespace = MyNamespace || {};
MyNamespace.Page = function() {};
MyNamespace.Page.prototype = {
callPage : function() {
"use strict";
$(document).on('change', 'select', function(event) {
event.preventDefault();
event.stopPropagation();
throw new Error('callPage method failed');
});
},
init : function() {
"use strict";
try {
this.callPage();
} catch(errorMessage) {
console.log('Error : ' + errorMessage);
}
}
};
当我用 try / catch 包装回调函数的内容时,它就起作用了:
$(document).on('change', 'select', function(event) {
try {
event.preventDefault();
event.stopPropagation();
throw new Error('callPage method failed');
} catch(errorMessage) {
console.log('Error : ' + errorMessage);
}
});
知道如何简化这一点以及为什么会这样吗?
【问题讨论】:
标签: javascript jquery error-handling javascript-objects