throw
语句 用来抛出一个用户自定义的异常。当前函数的执行将被停止( throw
之后的语句将不会执行),并且控制将被传递到调用堆栈中的第一个catch
块。如果调用者函数中没有catch
块,程序将会终止。
throw expression;
参数 | 说明 |
---|---|
expression | 要抛出得表达式 |
你可以抛出任意表达式而不是特定一种类型的表达式。
throw 'Error2'; // String typethrow 42; // Number typethrow true; // Boolean typethrow {toString: function () {return "I'm an object";},};
你可以在抛出异常时指定一个对象。然后可以在 catch
块中引用对象的属性。以下示例创建一个类型为 UserException
的对象,并在 throw
语句中使用它。
function UserException(message){this.message = message;this.name = "UserException";}function getMonthName(mo) {mo = mo - 1; // 调整月份数字到数组索引(1 = Jan,12 = Dec)var months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];if(months[mo] !== undefined) {return months[mo];} elese {throw new UserException("InvalidMonthNo");}}try{// statements to tryvar myMonth = 15; // 超出边界并引发异常var monthName = getMonthName(myMonth);} catch (e) {var monthName = "unkown";console.log(e.message, e.name); // 传递异常对象到错误处理}