在Python中,如果我遇到错误(例如,函数参数是错误的数据类型,因为格式错误等而无法对数据进行操作),我会向终端输出错误并运行{{1杀死它。我还没有学习错误处理,异常处理或其他什么,所以这就是我使用该方法的原因。 JavaScript错误/异常/任何处理看起来都很简单,但会引发或抛出代码的执行?如果没有,那我该怎么做呢?
假设我只想要一个函数(并且,通过扩展,整个代码集),如果我所在的页面与特定的URL匹配。当页面是错误的URL时调用该函数应该将消息记录到控制台并停止脚本的执行。我怎么做?只是在sys.exit()
区块进行测试?我是否需要使用一些用于处理错误/异常的特殊语法?
答案 0 :(得分:0)
当页面错误的URL时调用该函数应该将消息记录到控制台并停止脚本的执行。我怎么做?
如果网址不可接受,请抛出一个error,其中包含问题说明。 e.g。
throw new Error("operation x not supported at this page location");
这会导致消息被记录到控制台。确保围绕throw
语句的控制try...catch语句的缺席,或者在导致它的任何函数调用周围,确保在抛出错误时停止执行。
如评论中所述,抛出异常不会取消尚未启动但尚未完成的异步操作的回调。
如果在抛出错误时try...catch
语句生效,则执行将继续执行控制catch语句,而无需在throw
语句之后执行(其他)代码,并且不会恢复中间函数调用
<小时/> 编辑回复评论:
执行throw
语句而不将其捕获到函数内的函数不会返回。也就是说它不会返回一个值,并在调用代码后对它进行调用后立即恢复执行。
如果用户编写的try块包围对抛出错误的函数的直接或间接调用,则调用堆栈将恢复为执行try块时生效的调用堆栈。为try块内的函数调用创建的任何堆栈帧都会从调用堆栈中弹出并丢弃,而无需进一步执行被调用的函数。执行将使用与try块关联的catch块恢复,将错误作为catch参数传递,或者如果未提供catch块则传递给finally块。 系统不会自动将try块中抛出的错误记录到控制台。
如果没有找到用户编写的try块,则弹出所有调用堆栈帧,线程终止并且抛出的错误将记录到控制台。因此,在try块之外抛出错误会在不调用exit函数的情况下停止执行。
Python中等效的try...cacth
似乎是try...except
,raise
语句用于throw
,语法略有不同。