程序的非正常运行状态被称为 "异常" 或 "错误", 解释器会为每个错误情形创建并抛出一个 Error 对象, 其中包含错误的描述信息. 那么如何抛出错误?
在 JavaScript 中可以使用 throw 语句抛出错误. throw 语句用来抛出一个用户自定义的异常, 当前函数的执行将被停止 (throw 之后的语句将不会执行), 并且控制将被传递到调用堆栈中的第一个 catch 块.
如果调用者函数中没有 catch 块, 程序将会终止.
1, 抛出了一个值为字符串的异常
throw "Error"; // 控制台报错: Uncaught Error
2, 抛出了一个值为整数 13 的异常
throw 13; // 控制台报错: Uncaught 13
3, 抛出了一个值为 true 的异常
throw true; // 控制台报错: Uncaught true
4, 抛出了一个错误对象
- throw Error('abc'); // 控制台报错: Uncaught Error: abc
- throw new Error('abc'); // 控制台报错: Uncaught Error: abc
5, 应用举例: 提示函数调用中的错误
- function sum(...number){
- var isNum = number.every( v => !isNaN(v));
- if(isNum){
- return eval(number.join("+")); // 数组求和
- }else{
- throw new Error("参数必须是数字或数字字符串!");
- }
- }
- console.log(sum(1,2,3)); //6
- console.log(sum(1,2,'3')); //6
- console.log(sum(1,2,'a3')); // 报错! Error: 参数必须是数字或数字字符串!
ECMAScript 定义了六种类型的错误:
ReferenceError : 找不到对象时
TypeError : 错误的使用了类型或对象的方法时
RangeError : 使用内置对象的方法时, 参数超范围
SyntaxError : 语法写错了
EvalError : 错误的使用了 Eval
URIError :URI 错误
除此之外, 还可以使用 Error 构造方法创建自定义的 Error 对象, 并使用 throw 语句抛出该对象.
创建错误
- // 创建一个错误
- var err1 = Error("a is undefined!");
- var err2 = new Error("a is undefined!");
- console.log(typeof err1); //object
- console.log(typeof err2); //object
- console.log(err1); // 输出字符串:'Error: a is undefined!' at test.html:21
- console.log(err2); // 输出字符串:'Error: a is undefined!' at test.HTML:21
来源: http://www.css88.com/qa/javascript/11759.html