【发布时间】:2021-11-03 16:45:39
【问题描述】:
我今天(几个月后)用最新的软件包版本更新了我的package.json 文件,我认为影响这个错误的是问题主题中的那些。
一些错误处理块如下
try {
// ...
} catch(err) {
console.log(err.message);
}
由于 TypeScript 错误2571: Object is of type 'unknown'.而停止工作
不错!我只需要应用以下简单的更改:
try {
// ...
} catch(err) {
console.log(err instanceof Error ? err.message : JSON.stringify(err));
}
不仅我的代码再次开始工作,而且我觉得我的代码也更有弹性。
当我尝试处理从 AWS SDK v3 抛出的错误时,问题就出现了。
import { CloudWatchLogs, ResourceNotFoundException } from "@aws-sdk/client-cloudwatch-logs";
const cwl = new CloudWatchLogs({ region: "us-east-2" });
try {
const logGroupName = "...";
const logStreamName = "...";
const { events } = await cwl.getLogEvents({ logGroupName, logStreamName });
// ...
} catch(err) {
if(! (err instanceof ResourceNotFoundException)) console.log(err);
}
在上述代码示例的简化(我不处理分页)中,我只想忽略ResourceNotFoundException,但err instanceof ResourceNotFoundException 检查无法编译,因为ResourceNotFoundException 是interface 而不是@ 987654331@.
我找到了this answer,这似乎对我有帮助。
问题是:我应该为我需要处理的每个 AWS 异常编写一个 instanceOf\w+Exception 函数(抱歉是正则表达式),还是 AWS 提供了一种通用且可重用的方式?
我寻求这个的主要原因不是我很懒(而且我很懒),但是如果我编写自己的 instanceOf\w+Exception 函数来检查 AWS 开发工具包源代码,如果亚马逊,我的函数可能会停止工作将改变 SDK 中的某些内容。
【问题讨论】:
标签: javascript node.js typescript amazon-web-services