错误处理,”try..catch”

但是有一种语法结构 try..catch,它使我们可以“捕获(catch)”错误,因此脚本可以执行更合理的操作,而不是死掉。

“try…catch” 语法

try..catch 结构允许我们处理执行过程中出现的 error。从字面上看,它允许“尝试”运行代码并“捕获”其中可能发生的错误。

  1. try {
  2. // 执行此处代码
  3. } catch(err) {
  4. // 如果发生错误,跳转至此处
  5. // err 是一个 error 对象
  6. } finally {
  7. // 无论怎样都会在 try/catch 之后执行
  8. }

try..catch 仅对运行时的 error 有效
要使得 try..catch 能工作,代码必须是可执行的。换句话说,它必须是有效的 JavaScript 代码。
try..catch 同步工作
如果在“计划的(scheduled)”代码中发生异常,例如在 setTimeout 中,则 try..catch 不会捕获到异常

Error 对象

Error 对象包含下列属性:

  • message — 人类可读的 error 信息。
  • name — 具有 error 名称的字符串(Error 构造器的名称)。
  • stack(没有标准,但得到了很好的支持)— Error 发生时的调用栈。

    可选的 “catch” 绑定

    自定义 Error,扩展 Error

    JavaScript 允许将 throw 与任何参数一起使用,所以从技术上讲,我们自定义的 error 不需要从 Error 中继承。但是,如果我们继承,那么就可以使用 obj instanceof Error 来识别 error 对象。因此,最好继承它。

    扩展 Error