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
打印错误对象并查看它实现的属性和方法。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站。本站所有源码与软件均为原作者提供,仅供学习和研究使用。如您对本站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。