throw语句以及throw “error“ 和 throw new Error(“error“)的区别

本文介绍了JavaScript中的throw语句用于抛出自定义异常,以及如何使用try...catch结构捕获异常。此外,还详细讲解了Error对象及其构造函数,包括各种内置错误类型,如RangeError、ReferenceError等。在抛出自定义错误时,可以通过创建Error对象的实例并设置message属性来提供详细的错误信息。
摘要由CSDN通过智能技术生成

什么是 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值