javascript - 我可以使用'throw {}'并且堆栈跟踪是正确的吗?
问题描述
我尝试了以下两种方式
new Promise((resolve, reject) => {
reject()
})
.catch(() => {
throw {
name: 'a',
message: 'b'
}
})
new Promise((resolve, reject) => {
reject()
})
.catch(() => {
throw new Error({
name: 'a',
message: 'b'
});
})
' throw {}
'有问题,是堆栈跟踪不对
“”的堆栈跟踪throw new Error()
是正确的,但不能将消息作为 json 抛出
我可以使用' throw {}
'并且堆栈跟踪是正确的吗?
解决方案
该stack
属性仅存在于Error
对象上。构造函数的第一个参数Error
是一个字符串,所以如果你将一个对象传递给它,它将被字符串化。你可以做
throw Object.assign(new Error("message"), {
// properties
});
抛出具有自定义属性的错误对象。
推荐阅读
- c - MISRA 2012 违规 - 类型不匹配(规则 10.1、10.4)
- r - R:纯固定效应模型中 sigma 的置信区间
- php - PHPMyAdmin 导出的数据库小于 PHPMyAdmin 控制面板中的数据库大小
- c# - 如何获取在 Roslyn 的 using 语句中声明的变量的类型
- node.js - 使用文件的内容而不用 express.js 保存文件?
- mysql - SQL插入专业化表
- gnuplot - 从同一行数据文件上的点画一条线
- android - Android Firebase 实时数据库:addListenerForSingleValueEvent 没有被触发
- java - 切换数据源和选择模式时是否存在 Hibernate 多租户开销
- java - Spring boot with Azure AD authentication