当前位置:嗨网首页>书籍在线阅读

04-抛出异常

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

11.3 抛出异常

在前面的例子中,用 try…catch 语句捕获JavaScript自身产生的错误(比如,当试图让非字符串调用 match 方法时)。也可以自己“抛出”(或“向上抛出”)错误,此时异常处理机制就会被启动。

不像其他编程语言中的异常处理,在JavaScript中,可以抛出任何值:数字、字符串,或其他任何类型。不过抛出 Error 实例可以更方便地处理异常。所以大多数 catch 块都期望捕获一个 Error 实例。始终记住一点,没法准确地知道抛出的错误会在什么时候被捕获(编写的函数可能会被其他人使用,而他们会理所当然地认为这个函数抛出的任何错误都是 Error 实例)。

例如,如果需要给一个银行应用开发付款功能,可能会在账户余额不足的时候抛出一个异常(这是意料之中的异常,因为在买单之前,首先应该检查账户余额够不够):

function billPay(amount, payee, account) {
   if(amount > account.balance)
      throw new Error("insufficient funds");
   account.transfer(payee, amount);
}

调用 throw 的时候,当前函数会立即停止执行(所以在本例中, account.transfer 将不会被调用,这也是期望的结果)。