从 JSON.parse 捕获异常的正确方法

2022-08-29 23:51:42

我正在使用有时包含 404 响应的响应。在返回404的情况下,有没有办法捕获异常,然后执行其他一些代码?JSON.parse

data = JSON.parse(response, function (key, value) {
    var type;
    if (value && typeof value === 'object') {
        type = value.type;
        if (typeof type === 'string' && typeof window[type] === 'function') {
            return new(window[type])(value);
        }
    }
    return value;
});

答案 1

我发布一些东西到一个iframe中,然后用json解析回iframe的内容...所以有时它不是一个json字符串

试试这个:

if(response) {
    try {
        a = JSON.parse(response);
    } catch(e) {
        alert(e); // error in the above string (in this case, yes)!
    }
}

答案 2

我们可以检查错误和404状态代码,并使用.try {} catch (err) {}

你可以试试这个 :

const req = new XMLHttpRequest();
req.onreadystatechange = function() {
    if (req.status == 404) {
        console.log("404");
        return false;
    }

    if (!(req.readyState == 4 && req.status == 200))
        return false;

    const json = (function(raw) {
        try {
            return JSON.parse(raw);
        } catch (err) {
            return false;
        }
    })(req.responseText);

    if (!json)
        return false;

    document.body.innerHTML = "Your city : " + json.city + "<br>Your isp : " + json.org;
};
req.open("GET", "https://ipapi.co/json/", true);
req.send();

阅读更多 :