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 将不会被调用,这也是期望的结果)。