gpt4 book ai didi

javascript - 捕获错误,onerror 事件

转载 作者:行者123 更新时间:2023-11-30 14:52:18 25 4
gpt4 key购买 nike

我正在 try catch 用户网络浏览器中发生的错误。我希望用户发送错误的屏幕截图,可能包括文件、行号等。

我希望它现在变得相当简单和标准化。但我想知道。经过反复试验,我想出了这个:

window.addEventListener('error', function (e) {
console.log(e);
let error = e;
if (e.error) error = e.error;
let msg = "There was an error.";
msg += " Please go to https://somewhere.com/";
msg += " and post an image of this message. \n\nError: ";
if (error.message) {
msg += error.message;
} else {
msg += error;
}
if (error.stack) msg += "\n\n"+error.stack;
console.log(msg);
alert(msg);
});

有用吗?嗯,也许吧,但不像我预期的那样。例如,从控制台尝试此操作并没有在警报弹出窗口中给我“测试错误”,而是“脚本错误”:

setTimeout(function(){throw "test error"}, 1000)

我应该怎么做? (我只对较新的浏览器感兴趣,实际上目前只对 Chrome 感兴趣。以后可能会使用 Firefox 和 Edge。)

而且,一件相当重要的事情:通过添加这个处理程序我能捕捉到哪些错误?异步? promise ?等

编辑:首先总结到目前为止的答案。最重要的是这两者之间的区别(只有第二个在 Chrome 中给出了回溯):

throw "some error"
throw Error("some error")

现在到问题的另一半。捕获了哪些错误。例如,我在控制台中得到了这个,但它从未到达我上面的错误处理程序。为什么? (这是来自 IndexedDB,使用 idb.js)

Uncaught (in promise) DOMException: Key already exists in the object store.

最佳答案

你可能需要抛出一个错误:)

 throw new Error("test error")

关于javascript - 捕获错误,onerror 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47926040/

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