在JavaScript中停止执行

在JavaScript中停止执行,javascript,exception-handling,Javascript,Exception Handling,在Python中,如果我遇到错误(例如,函数参数的数据类型错误,由于数据格式错误而无法对其进行操作,等等),我会将错误打印到终端,然后运行sys.exit()将其消除。我还没有开始学习错误处理、异常处理或其他什么,这就是我使用这种方法的原因。JavaScript错误/异常/任何处理看起来都很简单,但引发或抛出会停止代码的执行吗?如果没有,我该怎么做 比如说,如果我所在的页面与特定的URL匹配,我只想让一个函数(以及扩展后的整个代码集)工作。当页面是错误的URL时调用函数应该将消息记录到控制台并停

在Python中,如果我遇到错误(例如,函数参数的数据类型错误,由于数据格式错误而无法对其进行操作,等等),我会将错误打印到终端,然后运行
sys.exit()
将其消除。我还没有开始学习错误处理、异常处理或其他什么,这就是我使用这种方法的原因。JavaScript错误/异常/任何处理看起来都很简单,但引发或抛出会停止代码的执行吗?如果没有,我该怎么做

比如说,如果我所在的页面与特定的URL匹配,我只想让一个函数(以及扩展后的整个代码集)工作。当页面是错误的URL时调用函数应该将消息记录到控制台并停止脚本的执行。我该怎么做?只需在
try
块中进行测试?我是否需要使用一些用于处理错误/异常的特殊语法

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

如果URL不可接受,则抛出一个带有问题描述的URL。e、 g

throw new Error("operation x not supported at this page location");
这将导致将消息记录到控制台。确保
throw
语句周围或导致该语句的任何函数调用周围缺少控制语句,以便在抛出错误时停止执行

如注释中所述,抛出异常不会取消已启动但尚未完成的异步操作的回调

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


根据评论进行编辑:

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

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

如果未找到用户编写的try块,则弹出所有调用堆栈帧,线程终止,抛出的错误记录到控制台。因此,在try块之外抛出错误会停止执行,而不调用exit函数


Python中的
try…cacth
的等价物似乎是一个
raise
语句,用于
throw
,语法略有不同

是的,这就是异常在JS(和Python)中的工作方式。抛出代码的执行,直到最近的<代码> catch <代码>处理程序。还需要考虑代码的性质(异步或同步)。例如,在HTTP请求后抛出错误不会停止请求或任何相关回调。@Bergi我没想到会这样。我认为
catch
可以用来报告错误,然后退出。我在函数中使用它,但仍然返回一个对象。@Melab
catch
可以用来做任何事情,包括退出,但通常它只报告错误。然后执行流在
try
/
catch
块之后继续。这会阻止使用对象的函数返回对象吗?那么调用生成错误的函数的函数应该如何停止?在Python中,如果我编写的函数将错误的类型传递给特定函数,那么所有执行都将停止。