0
私は$ .getJSONに例外をスローするとJSの問題が少しありますが、この例外は親関数によってキャッチされず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
は、私は他の多くの投球を持っているとのtry/catchと、私はこの問題を持っていない... あなたはなぜ私を説明できますか? "
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;
}
}
そしてライン "新しい例外を投げる(" 見つからないファイル ' "+ファイル+"');":ここでは
は私ConfLoader "クラス" であります私の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) {
}
}
}
「例外」クラスは、他のスローのために働くのカスタム例外クラスです:
function Exception(msg, fatal) {
this.message = msg;
this.fatal = fatal;
this.isFatal = function() {
return this.fatal;
}
this.getMessage = function() {
return this.message;
}
return this;
}
ありがとう! :)
ああ、私はそれを疑った..しかし、それを解決する方法は? "async:false"の$ .ajaxを使用していますか? ..これは本当にきれいではありません.. –
@JorisBertomeu私が言ったように、直接または失敗を処理する別の関数を呼び出すことによって、イベントハンドラの失敗を処理します。 – Chris
元気?多分私は約束を使用してもいいですか? –