unhandledrejection
在使用creat-react-app
构建项目时无法捕获某些错误。
window.addEventListener("unhandledrejection", function(e) {
console.log(e);
alert(e.reason);
});
function onclick() {
Promise.resolve().then(() => {
abcd(); // not alert
// throw "abcd"; // alert
});
}
function App() {
return (
<div className="App">
<h1>Hello CodeSandbox</h1>
<h2>Start editing to see some magic happen!</h2>
<button onClick={onclick}>error</button>
</div>
);
}
答案 0 :(得分:0)
您可以兑现被拒绝的承诺。
someFunctionReturnsPromise()
.then(resolvedValue => { /* do stuff */ })
.then(anotherResolvedValue => { /* do more stuff */ })
.catch(error => { /* handle any rejected promises here */ })
.finally(() => { /* you can do stuff here regardless of promise resolution */ });
尽管,我现在意识到您在问为什么为unhandledrejection
添加一个侦听器通常不会捕获错误。它实际上起作用,并捕获了abcd()
引发的未定义函数错误。
Unhandled event handler responding to promise rejection
请注意,事件unhandledrejection
不支持通用浏览器,实际上,Chrome 49+仅支持仅。