javascript - 为什么这个 try .. catch 块没有捕捉到错误?
问题描述
所以我正在为我的 Discord 机器人制定一个禁止命令,并且使用 Discord 角色层次结构和所有这些,我认为如果被 ping 的用户高于机器人,则 try ... catch 块会起到作用。这是我的代码:
try {
msg.mentions.members.first().ban()
} catch (error) {
errorOccured = true
let embed = new Discord.MessageEmbed()
.setTitle("Error")
.setDescription(`I do not have permissions to ban <@${msg.mentions.members.first().id}>.`)
.setTimestamp()
.setColor('RED')
return msg.channel.send(embed)
}
这是我得到的错误:
UnhandledPromiseRejectionWarning: DiscordAPIError: Missing Permissions
现在,我的问题是,为什么这个 catch 块没有捕捉到错误?如果我只是愚蠢,请解释为什么以及如何解决这个问题。谢谢!
快速编辑:我已经尝试过使用,process.on('unhandledRejection' ....
但由于某种原因,它也会发现以前的错误,我不知道如何解决这个问题。如果您对此有解决方案,那就更好了!:)
编辑 2:@TinNguyen 在评论中已修复,谢谢!附言。@Bergur 的解决方案也可能是一个解决方案,但我现在没有时间测试它。
解决方案
UnhandledPromiseRejectionWarning: DiscordAPIError: Missing Permissions
可以通过以下方式处理此警告:
guildMember.ban({ days: 7, reason: 'They deserved it' })
.then(console.log)
.catch(console.error);
如问题所示的一般 try catch 块不会处理该警告。
推荐阅读
- javascript - 如何使用 AJAX 获取和显示 API 响应
- asp.net-core - ASP.NET Core中如何判断某个模型是从请求体绑定还是从路由绑定还是从查询参数绑定等
- typescript - 带有 typesafe keyof params 的装饰器
- xamarin - WebAuthenticator -> 您必须继承 WebAuthenticatorCallbackActivity 并为其创建一个与您的 callbackUrl 匹配的 IntentFilter
- c - 如何在不更改 C 中的其余位的情况下在某个位置设置新的位模式?
- r - 如何计算每行数据框中的整数值的数量
- javascript - 如何解析 url 查询字符串中的完整链接?
- reactjs - 如何更改 Sencha Extreact Grid 产品的样式(如果有汇总行则为字体颜色)
- powerbi - 查找最大值和相关记录
- c# - System.TimeoutException:“30000 毫秒后发生超时”问题