为什么crockford在他的json_parse函数中创建了这种类型的错误函数?

时间:2015-10-16 18:12:23

标签: javascript json error-handling

https://github.com/douglascrockford/JSON-js/blob/master/json_parse.js 在这个链接中,Douglas Crockford创建了一个json_parse函数,该函数由一个IIFE中的许多函数组成。其中一个内部函数是以下错误抛出函数:

    error = function (m) {
        throw {
            name: 'SyntaxError',
            message: m,
            at: at,                // the variable he stores his incrementing index
            text: text             // the string from the JSON object
        };
    },

我对这个错误函数很感兴趣,因为我从未见过像这样编写的错误函数。当我用这样的无用输入测试错误函数时:

json_parse('{123: 123}');

我收到以下错误:

/Users/<user>/src/crockford.js:30
            throw {
            ^
SyntaxError: Bad string

但是如果我回到原始的错误函数并通过删除at和text这样修改错误函数:

        error = function (m) {
            throw {
                name: 'SyntaxError',
                message: m
            };
        },

我最终得到了同样的错误消息。

如果在出现错误时没有显示索引和输入文本到错误消息中,有什么意义?我错过了他的错误函数的结构,目的是什么?

1 个答案:

答案 0 :(得分:2)

默认错误处理程序不显示这些属性,但catch块中的代码可以访问它们,或者您可以在Javascript调试器中查看它们。