gpt4 book ai didi

javascript - 从函数中抛出和捕获异常

转载 作者:数据小太阳 更新时间:2023-10-29 05:59:19 26 4
gpt4 key购买 nike

function connectTo(url) {
var xhr = new XMLHttpRequest();
xhr.open("GET", url, false);
xhr.onreadystatechange = function () {
if (xhr.readyState == xhr.DONE) {
throw "Troubles.";
}
};
xhr.send();
}

try {
connectTo("http://www.google.com");
} catch (e) {
console.log('Exception happend.');
}

也许“catch”部分将执行(在控制台中出现消息),但异常保持未捕获(= 在控制台中出现“Uncaught Troubles.”)。为什么?

最佳答案

throw 不会通过这样的回调冒泡。传入错误处理回调,手动处理。

让我说明一下你的堆栈跟踪

在 onreadystatechange 函数和 connectTo 函数之间没有堆栈跟踪连接。因此,当您抛出错误时,它永远不会冒泡到 connectTo 周围的 try catch block 。

firefox 正在做的是说 “哦,你做了一些不起作用的事情。让我为你解决这个问题,并按照你的想法去做”

function connectTo(url, err) {
var xhr = new XMLHttpRequest();
xhr.open("GET", url, false);
xhr.onreadystatechange = function () {
if (xhr.readyState == xhr.DONE) {
err.call(this, new Error("troubles"));
}
};
xhr.send();
}

connectTo("http://www.google.com", function(e) {
console.log(e);
});

关于javascript - 从函数中抛出和捕获异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4915906/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com