我今天(几个月后)用最新的软件包版本更新了我的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
而不是class
。
我发现这个答案似乎可以帮助我。
**问题是:**我应该为我需要处理的每个AWS异常编写一个instanceOf\w+Exception
函数(对于regexp,我很抱歉),还是AWS提供了一种通用的可重用方法?
我寻求这个的主要原因不是我懒惰(我确实是),而是如果我编写自己的instanceOf\w+Exception
函数来检查AWS SDK源代码,如果Amazon更改SDK中的某些内容,我的函数可能会停止工作。
2条答案
按热度按时间jm81lzqq1#
我找到了this issue:我强烈怀疑,此刻,答案很简单:不,没有。
**编辑:**同样的问题解决了,现在我们可以使用
instanceof
操作符(我还没有测试过)。y0u0uwnf2#
2022年更新
AWS SDK v3现在使用instanceof并弃用类型脚本sdkerror
https://aws.amazon.com/blogs/developer/service-error-handling-modular-aws-sdk-js
显然,用您正在使用的客户机替换foo