为什么异常被捕获却仍被记录

Why is an exception logged despite being caught?

本文关键字:记录 异常 为什么      更新时间:2023-09-26

背景:我来自Python世界,在那里try:/except:完全处理异常,即我可以控制捕获异常时输出的内容

我正在对API进行AJAX调用,该API可能不可用:

function updateAPI() {
    getAPI()
            .done(function (r) {
                console.log('got API response: ' + JSON.stringify(r));
                updateFromAPI(r);
            })
            .fail(function (r) {
                console.log('failed to get API response: ' + r);
            }
            );
}
function getAPI() {
    return $.ajax({
        type: 'GET',
        url: 'http://127.0.0.1:8081/api'
    });
}

我本来想把我的两条信息中的一条发送到控制台,就这样。然而,控制台也显示实际错误,由JS:记录

Failed to load resource: net::ERR_CONNECTION_REFUSED (16:11:45:867 | error, network)
  at http://127.0.0.1:8081/api
failed to get API response: [object Object] (16:11:45:868)

这种冗长是否正常

第二行显示我发现了错误(我还不知道如何正确显示)。

根据文档:

jqXHR.fail(函数(jqXHR,textStatus,errorThrown){});

对于失败的请求,参数与.fail()的参数相同:jqXHR对象、textStatus和errorThrown

通过执行console.log('failed to get API response: ' + r);,您只记录了xhr对象(即[object Object])。

尝试:

.fail(function (r, textStatus, errorCode) {
    console.log('failed to get API response: ' + textStatus + '(error ' + errorCode + ')');
});