throw语句以及throw “error“ 和 throw new Error(“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

猜你喜欢

转载自blog.csdn.net/ThisEqualThis/article/details/129375085