首页 > 解决方案 > 为什么这个 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 的解决方案也可能是一个解决方案,但我现在没有时间测试它。

标签: javascriptnode.jsdiscorddiscord.js

解决方案


UnhandledPromiseRejectionWarning: DiscordAPIError: Missing Permissions

可以通过以下方式处理此警告:

guildMember.ban({ days: 7, reason: 'They deserved it' })
    .then(console.log)
    .catch(console.error);

如问题所示的一般 try catch 块不会处理该警告。


推荐阅读