停止在JavaScript中执行

Stopping execution in JavaScript

本文关键字:执行 JavaScript      更新时间:2023-09-26

在Python中,如果我遇到一个错误(例如,函数参数是错误的数据类型,不能操作数据,因为它是格式化错误,等等),我打印一个错误到终端,并运行sys.exit()来终止它。我还没有学习错误处理,异常处理之类的东西,这就是我使用那个方法的原因。JavaScript错误/异常/任何处理看起来很简单,但将引发或抛出暂停代码的执行?如果没有,那我该怎么做?

假设我只想要一个函数(并且,通过扩展,整个代码集)工作,如果我所处的页面匹配特定的URL。当页面是错误的URL时调用该函数应该将一条消息记录到控制台并停止脚本的执行。我怎么做呢?就在try区进行测试吗?我是否需要使用一些特殊的语法来处理错误/异常?

当页面是错误的URL时调用该函数应该将一条消息记录到控制台并停止脚本的执行。我怎么做呢?

如果URL不可接受,抛出错误并描述问题。例如

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

这将导致消息被记录到控制台。确保不存在。在throw语句周围的catch语句,或者在任何导致它的函数调用周围的catch语句,当抛出错误时停止执行。

正如在注释中提到的,抛出异常不会取消异步操作中尚未发起但尚未完成的回调。

如果在抛出错误时try...catch语句有效,则继续执行控制catch语句,而不进一步执行throw语句之后的(其他)代码,也不恢复中间函数调用。


编辑回复评论:

执行throw语句而没有在函数内部捕获它的函数不会返回。也就是说,在调用代码中对它进行调用后,它不返回值并立即恢复执行。

如果用户写的try块包含对抛出错误的函数的直接或间接调用,则调用堆栈将恢复到执行try块时有效的堆栈。在try块内为函数调用创建的任何堆栈帧都将从调用堆栈中弹出并丢弃,而不再执行被调用的函数。执行在与try块关联的catch块中继续执行,将抛出的错误作为catch参数传递,如果没有提供catch块,则在finally块中继续执行。系统不会自动将try块内抛出的错误记录到控制台。

如果没有找到用户写入的try块,则弹出所有调用堆栈帧,线程死亡并将抛出的错误记录到控制台。因此,在try块之外抛出错误将停止执行而不调用退出函数。

在Python中相当于try...cacth的似乎是try...except, raise语句用于throw,语法略有不同。