Javascript 为什么要这样做。。catch块没有捕获错误?

Javascript 为什么要这样做。。catch块没有捕获错误?,javascript,node.js,discord,discord.js,Javascript,Node.js,Discord,Discord.js,因此,我正在为我的Discord机器人开发一个ban命令,使用Discord角色层次结构和所有这些,我想尝试一下。。。如果ping用户高于bot,则catch block将执行此操作。这是我的密码: try { msg.mentions.members.first().ban() } catch (error) { errorOccured = true let embed = new Discord.MessageEmbed() .setTitle("

因此,我正在为我的Discord机器人开发一个ban命令,使用Discord角色层次结构和所有这些,我想尝试一下。。。如果ping用户高于bot,则catch block将执行此操作。这是我的密码:

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)
}
试试看{
msg.indications.members.first().ban()
}捕获(错误){
ErrorOccursed=true
let embed=new Discord.MessageEmbed()
.setTitle(“错误”)
.setDescription(`I没有禁止的权限。`)
.setTimestamp()文件
.setColor(“红色”)
返回msg.channel.send(嵌入)
}
下面是我得到的错误:

未处理的PromisejectionWarning:DiscordAPIError:缺少权限

现在,我的问题是,为什么这个catch块不能捕获错误?如果我只是装聋作哑,请解释我为什么以及如何解决这个问题。谢谢

快速编辑:我已经尝试过使用
进程。在('unhandledrefraction'…
但由于某种原因,这也会导致以前的错误,我不知道如何修复。如果您有解决方案,那就更好了!:)

编辑2:已由@TinNguyen down在评论中修复,谢谢!另外,@Bergur的解决方案也可能是一个解决方案,但我现在没有时间测试它

UnhandledPromiseRejectionWarning: DiscordAPIError: Missing Permissions
此警告可通过以下方式处理:

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

问题中所示的常规try-catch块不会处理该警告。

因为未处理的PromisejectionWarning不是由
try
@Teemu中的代码引起的,这只是我的问题;它是。在我剩下的代码中,我没有使用权限,而错误清楚地表明这就是它出错的原因。我不熟悉库@Teemu,但它似乎是由try中的代码引起的。如果他想处理警告,他必须这样做:
guildMember.ban({days:7,原因:'他们应得'})我可能错了。我不知道不一致,但是ban方法是异步的吗?也许把wait放在msg前面就足够了。提及,各位成员。first().ban()@TinNguyen谢谢你们意外的解决方案。不管什么原因,试一下。。。catch块不起作用,而
.catch(error=>{//code here})
起作用。没有线索,为什么,但它解决了它!
.ban()
的参数中的对象不是必需的,而是可选的,
.then()
也是可选的。如果您想在发生错误时执行一些代码,请在
.catch()
中创建一个箭头函数,然后将代码放入,这对我来说非常适合。