我有一个小问题,当我在$ .getJSON中抛出一个异常时,父函数没有抓住这个异常,我有一个JS错误..
Chrome的控制台告诉我:
Uncaught [object Object]
(anonymous function) @ ConfLoader.class.js:24
j @ jquery.min.js:2
k.fireWith @ jquery.min.js:2
x @ jquery.min.js:4
(anonymous function) @ jquery.min.js:4
我有很多其他的投掷和尝试/捕获,我没有这个问题.. 你能解释一下为什么吗?
这是我的ConfLoader“class”:
var ConfLoader = {
/* Attributes */
apiToken : null,
lavaBaseURL : null,
apiURL : null,
/* Init method */
load : function(file) {
$.getJSON(file, function(data) {
if (data.apiToken)
this.apiToken = data.apiToken;
else
throw new Exception("Token API (apiToken) not found into config file.");
if (data.lavaBaseURL)
this.lavaBaseURL = data.lavaBaseURL;
else
throw new Exception("Lava URL (lavaBaseURL) not found into config file.");
if (data.apiURL)
this.apiURL = data.apiURL;
else
throw new Exception("API URL (apiURL) not found into config file.");
})
.fail(function() {
throw new Exception("File '"+file+"' not found.");
});
},
/* Methods */
getApiToken : function () {
return this.apiToken;
},
getLavaBaseURL : function () {
return this.lavaBaseURL;
},
getApiURL : function () {
return this.apiURL;
}
}
行“抛出新异常(”文件'“+文件+”'未找到。“);”给我一个JS错误..但是当我用ConfLoader的方法“加载”时,我抓住了这个异常:
var Powers = {
/* Attributes */
confLoader : null,
/* Methods */
init : function(configFile) {
try {
this.confLoader = ConfLoader.load(configFile);
} catch (e) {
throw e;
}
},
launch : function() {
try {
} catch (e) {
}
}
}
“Exception”类是一个自定义的Exception类,适用于其他throw:
function Exception(msg, fatal) {
this.message = msg;
this.fatal = fatal;
this.isFatal = function() {
return this.fatal;
}
this.getMessage = function() {
return this.message;
}
return this;
}
谢谢! :)