JavaScript 中将 Error 对象转换为字符串
要将错误对象转换为字符串,请访问对象的消息属性,例如 err.message
。 message 属性是对错误发生原因的人类可读描述。
const err = new Error('Something went wrong');
console.log(err.message); // 👉️ "Something went wrong"
当使用 Error()
构造函数创建错误时,我们可以访问错误的 message 属性以获取错误发生原因的人类可读字符串。
在一些罕见的情况下,第三方包在不使用本机
Error()
构造函数或从其扩展的情况下抛出错误。
最佳实践是始终使用错误构造函数抛出错误,或者在需要添加功能时扩展它。
throw new Error('Something went wrong');
Promise.reject(new Error('Something went wrong'));
即使在拒绝承诺时,我们也可以将错误传递给 reject()
方法。
如果你必须处理来自第三方包的错误的奇怪实现,你应该检查错误值是否是一个对象并且具有消息属性以避免访问不存在的属性。
const err = null;
if (typeof err === 'object' && err !== null && 'message' in err) {
const message = err.message;
console.log(message);
}
我们的 if 条件使用逻辑与 &&
运算符,因此要运行 if 块,必须满足所有条件。
我们首先检查 err 变量是否存储了具有对象类型的值,因为错误具有对象类型。
然后我们检查变量是否不等于 null。 不幸的是,如果您检查 null 的类型 - console.log(typeof null)
,我们将得到一个“object”值,因此我们必须确保该值不为 null。
我们检查的最后一件事是该对象包含
message
属性。
然后我们知道我们可以安全地访问对象的消息属性。
如果这不起作用,作为最后的手段,您可以尝试访问错误对象的 toString()
方法。
一些第三方包抛出实现 toString()
方法的错误对象。
const err = null;
if (typeof err === 'object' && err !== null && 'toString' in err) {
const message = err.toString();
console.log(message);
}
如果这也不起作用,我们必须使用 console.log
打印错误对象并查看它实现的属性和方法。
相关文章
Do you understand JavaScript closures?
发布时间:2025/02/21 浏览次数:108 分类:JavaScript
-
The function of a closure can be inferred from its name, suggesting that it is related to the concept of scope. A closure itself is a core concept in JavaScript, and being a core concept, it is naturally also a difficult one.
Do you know about the hidden traps in variables in JavaScript?
发布时间:2025/02/21 浏览次数:178 分类:JavaScript
-
Whether you're just starting to learn JavaScript or have been using it for a long time, I believe you'll encounter some traps related to JavaScript variable scope. The goal is to identify these traps before you fall into them, in order to av
How much do you know about the Prototype Chain?
发布时间:2025/02/21 浏览次数:150 分类:JavaScript
-
The prototype chain can be considered one of the core features of JavaScript, and certainly one of its more challenging aspects. If you've learned other object-oriented programming languages, you may find it somewhat confusing when you start
如何在 JavaScript 中合并两个数组而不出现重复的情况
发布时间:2024/03/23 浏览次数:86 分类:JavaScript
-
本教程介绍了如何在 JavaScript 中合并两个数组,以及如何删除任何重复的数组。