如何正确捕获错误并向错误添加信息

Nem*_*o64 5 javascript exception typescript

我想将信息添加到 typescript/javascript 中的 Error 对象。我目前这样做:

try {
    // code that might throw code
} catch (e) {
    throw new Error(`Error while processing file ${path}:\n${e}`);
}
Run Code Online (Sandbox Code Playgroud)

但这会删除先前错误中的信息。Java/PHP 在异常中都有一个previous参数,因此我可以包装错误并保留/扩展原始信息,但我似乎无法在 JavaScript 中找到等效项。

我该怎么做呢?

Nem*_*o64 0

所以没有标准的方法。

但是,如果您的目的只是向异常消息添加信息,而不弄乱错误本身,则可以扩展该message属性

try {
} catch (e) {
    e.message = `File: ${path}\n${e.message}`;
    throw e;
}
Run Code Online (Sandbox Code Playgroud)

这将保留正确的堆栈跟踪,并将像您期望的那样在 chrome 或节点控制台上显示。

这是一个异常示例:

Error: File: 6ff6255b-45b5-4895-8d59-50fa60663cfc.json
JSON Schema: schemas/schema.json
- must NOT have additional properties 
    at JsonFs.validate (driver/json-fs.ts:60:19)
    at JsonFs.readSource (driver/json-fs.ts:39:14)
    at async JsonFs.readSourceFile (driver/abstract-fs.ts:82:30)
    at async driver/abstract-fs.ts:46:34
Run Code Online (Sandbox Code Playgroud)