迹忆客 专注技术分享

当前位置:主页 > 学无止境 > WEB前端 > JavaScript >

JavaScript 中将 Error 对象转换为字符串

作者:迹忆客 最近更新:2022/12/01 浏览次数:

要将错误对象转换为字符串,请访问对象的消息属性,例如 err.messagemessage 属性是对错误发生原因的人类可读描述。

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 打印错误对象并查看它实现的属性和方法。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便