完整教程:力扣 30 天 JavaScript 挑战 第三题笔记

在这里插入图片描述

/**
* @param {string} val
* @return {Object}
*/
var expect = function(val) {
return {
toBe(val2){
if(val !== val2) throw new Error("Not Equal")
return true
},
notToBe(val2){
if(val === val2) throw new Error("Equal")
return true
}
}
};
/**
* expect(5).toBe(5); // true
* expect(5).notToBe(5); // throws "Equal"
*/

学到的知识点

1. 函数可以返回对象(对象里包括变量以及函数)

2. js中抛出错误 错误处理主要通过使用 throw 语句和 try…catch 块来实现。使用 throw 语句允许你创建自定义错误消息。

  1. 抛出字符串
    在try里面通过throw抛出一个字符串,在catch里面会被捕捉到。
function checkName(name) {
if (name === '') {
throw "Name can't be empty!";
}
return name;
}
try {
console.log(checkName(''));
} catch (error) {
console.error(error);
// "Name can't be empty!"
}
  1. 抛出 Error 实例:
    一种更常见和推荐的方法是抛出一个 Error 实例。这允许在错误中包含比如堆栈跟踪的附加元数据,有助于调试。
    附加元数据有什么用?
  • message
    你自己提供的错误描述,便于知道出错原因。
  • stack(堆栈跟踪)
    自动记录了代码执行到出错时的调用链和具体行号。
    开发时可以快速定位 bug 在哪里发生。
  • name
    错误的类型(比如 Error, TypeError, RangeError 等),便于分类处理。
function divide(numerator, denominator) {
if (denominator === 0) {
throw new Error("Cannot divide by zero!");
}
return numerator / denominator;
}
try {
console.log(divide(5, 0));
} catch (error) {
console.error(error.message);
// "Cannot divide by zero!"
console.error(error.name)
console.error(error.stack)
}
  1. 抛出错误集合
    有时候,你可能希望同时抛出多个错误。这在处理 Promise 时特别有用。JavaScript 有一个内置的 AggregateError 对象,可以在这类情况下使用。AggregateError 对象可以接受一个错误对象的可迭代集合(可迭代集合就是可以用 for…of 或 forEach 一次次取出来的)和一个可选的消息作为参数。在 Promise.any() 等方法中,如果所有 Promise 都失败,JavaScript 会抛出一个 AggregateError,里面包含所有失败原因。
let error1 = new Error("First Error");
let error2 = new Error("Second Error");
try {
throw new AggregateError([error1, error2], "Two errors occurred.");
} catch (error) {
if (error instanceof AggregateError) {
console.error(error.message);
// "Two errors occurred."
for (let e of error.errors) {
console.error(e.message);
// 打印 "First Error" 和 "Second Error"
}
}
}
posted @ 2025-08-13 16:52  yfceshi  阅读(10)  评论(0)    收藏  举报