繁体   English   中英

Discord.JS catch function 没有抓到错误

[英]Discord.JS catch function not catching errors

我正在尝试制作一个命令,让用户直接发送命令列表,但如果它无法发送它们,它会在频道中发送一条消息,告诉用户检查他们的隐私设置以允许服务器成员私信他们。

但是,当我尝试使用“catch”function 时,它要么吐出错误,要么没有捕获命令。 这是我当前的代码。

if(cmd=== `${prefix}test`){
    try {
    message.author.send("test")
    }
    catch(error){
    message.channel.send("Unable to send")
    }
    
  }

这不起作用,如果我将其更改为

if(cmd=== `${prefix}test`){
    try {
    message.author.send("test")
    }.catch(error){
    message.channel.send("Unable to send")
    }
    
  }

它说“ SyntaxError: Missing catch or finally after try

我尝试了很多解决方案并查看了其他几个 stackoverflow 问题,但我找不到解决方案。 如果需要更多详细信息,请发表评论,我会尽力回答。

这是因为message.author.send()是一个异步 function; 它将始终返回 promise。这意味着send()返回并退出try块,因此您的catch块将永远不会运行。

尝试先使用await关键字等待send()解析(或拒绝):

if (cmd === `${prefix}test`) {
  try {
    await message.author.send('test');
  } catch (error) {
    message.channel.send('Unable to send');
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM