当页面错误的URL时调用该函数应向控制台记录消息并停止脚本的执行。我怎么做?
如果URL不可接受,请输入error并附上问题描述。例如
throw new Error("operation x not supported at this page location");
这会导致消息被记录到控制台。确保在throw
语句周围控制try...catch语句的缺席,或者在导致该语句的任何函数调用周围,在抛出错误时暂停执行。
正如评论中提到的,抛出异常不会取消尚未从已启动但未完成的异步操作进行的回调。
如果try...catch
语句是在效果时引发错误,执行与不按throw
语句的(其他)代码进一步执行控制catch语句恢复,并且在不恢复中介函数调用。
编辑回应评论:
,没有抓住它的功能不返回内执行throw
语句的功能。也就是说,它不会在调用代码后立即返回值并立即恢复执行。
如果用户编写的try块围绕直接或间接调用引发该错误的函数,调用堆栈将恢复为执行try块时生效的调用堆栈。在try块中为函数调用而创建的任何堆栈框架将从调用堆栈中弹出并丢弃,而无需进一步执行调用的函数。执行继续执行与try块关联的catch块,传递作为catch参数抛出的错误,或者如果没有提供catch块,则在finally块中执行。 系统不会自动将在try块内抛出的错误记录到控制台。
如果找不到用户写入的try块,则会弹出所有调用堆栈帧,线程死亡并将抛出的错误记录到控制台。因此,在try块之外抛出一个错误会停止执行,而不调用退出函数。
Python中的try...cacth
的等价物似乎是try...except
,raise
语句用于throw
,语法略有不同。
是的,这就是JS(和Python)中的异常工作。抛出代码的执行直到最接近的catch处理程序。 – Bergi
您还需要考虑代码的性质(异步或同步)。例如,在HTTP请求之后抛出错误不会停止请求,也不会有任何关联的回调。 – MinusFour
@Bergi我没有想到。我认为'catch'可以用来报告错误,然后退出。我在我的函数中使用它,我仍然得到一个对象返回。 – Melab