抛出和捕获时“未捕获[对象对象]”

时间:2016-04-12 07:51:13

标签: javascript exception error-handling exception-handling

我有一个小问题,当我在$ .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;
}

谢谢! :)

0 个答案:

没有答案