背景知识:
JavaScript中捕捉错误的方法:try/ catch /
try/catch/finally 语句用于处理代码中可能出现的错误信息。
错误可能是语法错误,通常是程序员造成的编码错误或错别字。也 可能是拼写错误或语言中缺少的功能(可能由于浏览器差异)。
try语句允许我们定义在执行时进行错误测试的代码块。
catch 语句允许我们定义当 try 代码块发生错误时,所执行的代码块。
finally 语句在 try 和 catch 之后无论有无异常都会执行。
注意: catch 和 finally 语句都是可选的,但你在使用 try 语句时必须至少使用一个。
提示: 当错误发生时, JavaScript 会停止执行,并生成一个错误信息。使用 throw 语句 来创建自定义消息(抛出异常)。如果你将 throw 和 try 、 catch一起使用,就可以控制程序输出的错误信息。
目前所有浏览器都支持
翻译原文链接:https://frontarm.com/james-k-nelson/will-finally-run-quiz/
翻译正文:
你知道如何try
和catch
工作,但怎么样finally
?它是在重新抛出的异常或return
语句之后运行的吗?
随着async
/ 的出现await
,我最近发现自己在我的代码中使用了更多try
/ catch
/ finally
。但说实话,我有点不习惯了finally
。当我去实际使用它时,我有点不确定它的细节。所以我把几个例子放在一起。
当你throw
一个catch
考虑在那里你抛出一个异常的情况中一个catch
块。throw
在它退出函数之前没有什么可以抓住你的。不finally
跑?
答案是会进行运行
那如果是try里面是一个return语句呢?是否还会走finally?
答案是会运行。
finally
上的块将始终运行try
catch
finally
- 即使你提前保释例外或者return
。
这就是它如此有用的原因; 无论发生什么情况,它都是放置需要运行的代码的理想场所,比如容易出错的IO的清理代码。事实上,这就是本文的灵感来源。