javascript - 停止 JavaScript 中的执行

标签 javascript exception

在 Python 中,如果遇到错误(例如,函数参数的数据类型错误、由于格式错误而无法对数据进行操作等),我会在终端上打印错误并运行 sys.exit()杀死它。我还没有抽出时间来学习错误处理、异常处理或其他任何内容,所以这就是我使用该方法的原因。 JavaScript 错误/异常/任何处理看起来很简单,但是引发或抛出会停止代码的执行吗?如果没有,那我该怎么办?

假设我只希望当我所在的页面与特定 URL 匹配时,一个函数(以及整个代码集)能够工作。当页面的 URL 错误时调用该函数应将一条消息记录到控制台并停止脚本的执行。我怎么做?只需在try中进行测试即可堵塞?我需要使用一些特殊的语法来处理错误/异常吗?

最佳答案

Calling the function when the page is the wrong URL should log a message to the console and halt the script's execution. How do I do that?

如果 URL Not Acceptable ,则抛出 error并附有问题的描述。例如

throw new Error("operation x not supported at this page location");

这会导致消息被记录到控制台。确保不存在控制try...catch围绕 throw 语句或任何导致该语句的函数调用的语句,用于在引发错误时停止执行。

正如评论中提到的,抛出异常不会取消已启动但未完成的异步操作的回调。

如果抛出错误时 try...catch 语句有效,则使用控制 catch 语句恢复执行,而不会进一步执行 throw 之后的(其他)代码code> 语句,并且无需恢复中间函数调用。

<小时/> 编辑回应评论:

如果函数执行了 throw 语句而不在函数内部捕获该语句,则该函数不会返回。也就是说,在调用代码中对其进行调用后,它不会立即返回值并继续执行。

如果用户编写的 try block 围绕着对引发错误的函数的直接或间接调用,则调用堆栈将恢复到执行 try block 时有效的状态。在 try block 内为函数调用创建的任何堆栈帧都会从调用堆栈中弹出并丢弃,而不会进一步执行被调用的函数。使用与 try block 关联的 catch block 继续执行,将抛出的错误作为 catch 参数传递,或者如果未提供 catch block ,则在 finally block 中传递。 系统不会自动将 try block 内抛出的错误记录到控制台。

如果没有找到用户编写的 try block ,则弹出所有调用堆栈帧,线程终止,并且抛出的错误将记录到控制台。因此,在 try block 之外抛出错误会停止执行,而无需调用退出函数。

Python 中 try...cacth 的等价物似乎是 try...except使用用于 throwraise 语句,其语法略有不同。

关于javascript - 停止 JavaScript 中的执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39500167/

相关文章:

javascript - Jquery Animate 不适合我

javascript - 使用 javascript 转到页面的某个部分

javascript - Angular : Open new tab without popup blocker

javascript - 在 Firefox 中上传大文件名时设计变形

Django - 在引发错误后在 transaction.atomic block 内对数据库进行操作

php - 服务帐户的 Google Analytics API oauth 异常 "invalid_grant"。两台服务器上的相同代码。只有一个有效

c++ - 在 boost asio 中处理未处理的异常并重新启动处理的正确方法

javascript - 如何从 iframe 内的 TinyMCE 实例获取内容

c++ - 异常和错误代码 : mixing them the right way

java - 如果用户输入数字以外的任何内容,如何将用户返回到程序的输入阶段?