gpt4 book ai didi

javascript - 网站的 javascript 中未处理的异常会怎样?

转载 作者:行者123 更新时间:2023-11-29 16:31:28 24 4
gpt4 key购买 nike

我最近发生了一个异常,直到我查看 chrome 开发工具控制台我才注意到。

网站的 javascript 是否只是在某个地方的更高级别处理和记录异常?我没有在下面的 function1 中处理异常,所以后面的函数只是没有运行或其他什么。

异常发生时到底发生了什么?我已经习惯了未处理的异常,这意味着程序会停止

containingFunction
{
function1();
function2()
function3()
return;
}

最佳答案

长篇小说

如果异常没有被捕获并被允许冒泡到全局范围,那么 javascript 引擎将简单地停止处理任何东西。

所以它不是简单的:

later functions were just not being run or something

异常下面的任何代码都不会运行。无论它们是函数、if 语句、循环等。

但是..事件不断发生??

嗯..这取决于。

更具体地说,浏览器停止当前执行的脚本 (1) 并输入event loop .这意味着在异常发生之前已经成功安排 future 事件的任何先前代码都将执行该 future 回调。

例如下面的代码:

<html>
<head>
<script>
setTimeout(() => console.log("ha"),1000);

throw new Error("oops");

console.log("ho");
</script>
</head>
<body>
</body>
</html>

或者如果您更习惯于查看基于 promise 的代码:

<html>
<head>
<script>
Promise.resolve().then(()=>console.log("ha"));

throw new Error("oops");

console.log("ho");
</script>
</head>
<body>
</body>
</html>

都会抛出错误并打印“ha”,但不会打印“ho”。

但这取决于解释器。以上内容适用于浏览器,但不适用于 node.js。 Node 会在出现任何 Uncaught Error 时简单地退出进程。

例如代码:

setTimeout(() => console.log("ha"),1000);

throw new Error("oops");

console.log("ho");

或者如果您更习惯于查看基于 promise 的代码:

Promise.resolve().then(()=>console.log("ha"));

throw new Error("oops");

console.log("ho");

在使用 node 执行时不会打印“ha”或“ho”。

(1) - By "scripts" I mean the script you wrote yourself as a web developer. Of course I don't mean any of the code that the browser developers wrote.

关于javascript - 网站的 javascript 中未处理的异常会怎样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56268481/

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