我试图发出一个命令,向用户发送命令列表,但如果无法对其进行DM,它会在通道中发送一条消息,告诉用户判断其隐私设置,以允许服务器成员对其进行DM.

然而,当我try 使用"catch"函数时,它要么抛出错误,要么没有捕获命令.这是我目前的代码.

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"

我已经try 了很多解决方案,并查看了其他几个stackoverflow问题,但我找不到解决方案.如果需要更多细节,请发表 comments ,我会尽力回答.

推荐答案

这是因为message.author.send()是一个异步函数;它总会回报你一个promise .这意味着send()将返回并退出try街区,因此catch街区将永远不会运行.

try 等待send()来解决(或拒绝)首先使用await关键字:

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

Javascript相关问答推荐

如何在不使用类型化数组的情况下将32位浮点数按位转换为整值?

如何修复内容安全策略指令脚本-SRC自身错误?

是什么原因导致此Angular 16应用程序中类型错误时属性结果不存在?

警告!合同执行期间遇到错误[执行已恢复](Base Layer 2)

node TS:JWT令牌签名以验证客户端和后台问题之间的身份验证

模块与独立组件

docx.js:如何在客户端使用文档修补程序

给定一个凸多边形作为一组边,如何根据到最近边的距离填充里面的区域

在服务器上放置了Create Reaction App Build之后的空白页面

在286之后恢复轮询

如何在ASP.NET JavaScript中使用Google Charts API仅对绘制为负方向的条形图移动堆叠条形图标签位置

更新动态数据中对象或数组中的所有值字符串

有条件重定向到移动子域

在Matter.js中添加从点A到另一个约束的约束

使用Nuxt Apollo在Piniastore 中获取产品细节

Puppeteer上每页的useProxy返回的不是函数/构造函数

有没有一种直接的方法可以深度嵌套在一个JavaScript对象中?

用于部分字符串的JavaScript数组搜索

P5JS-绘制不重叠的圆

ComponentWillReceiveProps仍在React 18.2.0中工作