引发但未处理的异常会怎样?

时间:2020-08-13 21:14:26

标签: javascript throw

当我用Google搜索抛出的异常时,我得到的答案是抛出异常。哇。对我而言根本没有任何意义。

此后,我通过stackoverflow了解到,它会抛出错误直到最接近的处理程序对其执行操作为止。

已经有一个问题,但是根本无法回答我的问题。如果不处理,抛出的外观会如何?它会警告用户吗?它仅显示在控制台中吗?它会打到我附近的某人并导致他们在凌晨3点敲我的门吗?

有人可以请您分解一下它的外观,以便我可以根据现实世界的类比来形象化它。就像一个例外,就像将垃圾放入袋子中,如果不被捡拾,放在人行道上以进行拾取....我不知道。请帮忙解释。

2 个答案:

答案 0 :(得分:1)

我个人喜欢MDN summary of throw

-Dserver.port=9099 语句引发用户定义的异常。当前函数的执行将停止(throw之后的语句将不会执行),并且控制权将传递到调用堆栈中的第一个catch块。如果调用方函数之间不存在throw块,则程序将终止。

链接的文档中还包含一些示例,可以帮助您更好地了解catch

要回答这个问题:

如果不处理,会抛出什么样的外观?它会警告用户吗?它仅显示在控制台中吗?

答案是“是”,它确实显示在您的控制台中。通常为鲜红色,并带有错误堆栈,该错误堆栈会向您显示错误的位置。

throw

答案 1 :(得分:0)

答案只是“取决于”。该实现定义了用户代码未捕获的异常发生了什么。我所知道的所有浏览器都将其记录在控制台中,并停止执行该脚本或函数,否则让页面正常运行。 Node.js将错误输出到STDERR,并使用非零退出代码终止该过程。

在两种情况下,执行用户代码的过程仍然可以“处理”异常。