throw语句
异常就是当发生了某种异常情况或错误时产生的一个信号。抛出异常,就是用信号通知发生了错误或异常状况。捕获异常是指处理这个信号,即采用必要的手段从异常中恢复。在JavaScript中,当产生运行时错误或者程序使用throw语句时就会显式地抛出异常。使用try/catch/finally语句可以捕获异常。throw语句的语法如下:
throw expression;
expression的值可以是任意类型的。可以抛出一个代表错误码的数字,或者包含可读的错误消息的字符串。当JavaScript解释器抛出异常的时候通常采用Error类型和其子类型。一个Error对象有一个name属性表示错误类型,一个message属性用来存放传递给构造函数的字符串。
function factorial(x){
if( x < 0) throw new Error("x不能为负数");
return x;
}
factorial(-3); //Error: x不能为负数
当抛出异常时,JavaScript解释器会立即停止当前正在执行的逻辑,并跳转至最近的异常处理程序。异常处理程序用try/catch/finally语句的catch从句编写。如果抛出异常的代码块没有一条相关联的catch从句,解释器会检查更高层的闭合代码块,看它是否有相关联的异常处理程序。以此类推,直到找到一个异常处理程序为止。如果抛出异常的函数没有处理它的try/catch/finally语句,异常将向上传播到调用该函数的代码。这样的话,异常就会沿着JavaScript方法的词法结构和调用栈向上传播。如果没有找到任何异常处理程序,JavaScript将把异常当成程序错误来处理,并报告用户。