文章目录
- 什么是 throw 语句?
- throw 语句后面跟一个对象
- Error 构造函数对象
- 结论
什么是 throw 语句?
throw 语句用来抛出一个用户自定义的异常。当前函数的执行将被停止(throw 之后的语句将不会执行),并且控制将被传递到调用堆栈中的第一个 catch 块。如果调用者函数中没有 catch 块,程序将会终止。
语法:
throw 一个表达式 || 对象
例如:
throw "error"; // 抛出了一个值为字符串的异常
throw 42; // 抛出了一个值为整数 42 的异常
throw true; // 抛出了一个值为 true 的异常
console.log("aaa");
console.log("bbb");
console.log("ccc");
throw语句抛出的异常可以被 try...catch()...
语句捕获。例如:
try{
throw "error"; // 只捕获第一个错误
throw 42;
throw true;
} catch (e){
console.log(e); // "error"
}
console.log("aaa");
console.log("bbb");
console.log("ccc");
throw 语句后面跟一个对象
你可以在抛出异常时指定一个对象。然后可以在catch块中引用对象的属性。
// 声明一个当用户信息报错时的构造函数
function UserInfo(message){
this.message = message;
this.name = "userInfoError";
}
// 分数判断,不及格则抛出用户信息错误对象
let score = 60;
if (score >= 70){
console.log("考试及格");
} else {
throw new UserInfo("考试不及格");
}
使用 try...catch()...
捕获错误:
try {
if (score >= 70) {
console.log("考试及格");
} else {
throw new UserInfo("考试不及格");
}
} catch (error) {
console.log(error);
console.log(error.name + ": " + error.message);
}
Error 构造函数对象
Error 对象是 JavaScript 内建的一个对象。当运行时错误产生时,Error 对象会被抛出。Error 对象也可用于用户自定义的异常的基础对象。
除了通用的 Error 构造函数外,JavaScript 还有许多其他错误类型的构造函数,常见的有:
名称 | 内容 |
---|---|
RangeError: | 创建一个 error 实例,表示错误的原因:数值变量或参数超出其有效范围。 |
ReferenceError: | 创建一个 error 实例,表示错误的原因:无效引用。 |
SyntaxError: | 创建一个 error 实例,表示错误的原因:语法错误。 |
TypeError: | 创建一个 error 实例,表示错误的原因:变量或参数不属于有效类型。 |
URIError: | 创建一个 error 实例,表示错误的原因:给 encodeURI() 或 decodeURI() 传递的参数无效。 |
Error有两个常用的实例属性:name 和 message。
属性 | 释义 |
---|---|
name: | 构造函数内部决定的,无需传值。 |
message: | 错误消息。对于用户创建的 Error 对象,这是构造函数的第一个参数提供的字符串。 |
使用:
let error = new Error("抛出一个异常");
console.log(error);
使用throw语句抛出当前错误:
throw new Error("抛出一个异常");
使用 try..catch()...
捕获错误:
try {
throw new Error("抛出一个异常");
} catch (error) {
console.log(error); // error错误对象
console.log(error.name + ": " + error.message); // error.message为自定义错误信息
}
当 throw 语句后面抛出的时对象时,想要获取自定义的错误信息,需要拿取错误对象的 message 属性。
结论
throw "error"
被 try...catch(error)...
捕获时,error 为自定义错误信息;
throw new Error("error")
被 try...catch(error)...
捕获时,error 为错误对象,需要 error.message 获取自定义错误信息。
参考地址:
throw - JavaScript | MDN
Error - JavaScript | MDN