【问题标题】:discord.js client.on("error") not being calleddiscord.js client.on("error") 没有被调用
【发布时间】:2021-01-05 04:28:05
【问题描述】:

我有这么简单的代码:

client.on("error", () => console.log('test'))

这似乎从来没有被调用过。 我试着让我的机器人做一些它没有权限做的事情,但机器人只是崩溃了,test 永远不会被记录下来。我想知道为什么不是,除了将所有内容都放在 try/catch 中之外,是否还有一种方法来处理错误

【问题讨论】:

    标签: javascript node.js error-handling discord.js


    【解决方案1】:

    我不确定为什么当您收到权限错误时没有调用该行。我怀疑错误处理程序不会接收未处理的拒绝。从本质上讲,将任何 API 错误视为发生在 Promise 上的权限错误。您可以在错误上添加.catch() 或try/catch 以捕获它并对错误进行处理,而不是中断或使代码执行崩溃。

    我假设:a) Discord 的 error 事件仅在错误被捕获且未被处理时触发,或者 b) Discord API 错误不会触发该事件。我不知道这些理论中哪一个是准确的。也许尝试引起不同类型的错误;您测试出的错误是 API 错误,但您也可以导致 discord.js library errors 甚至 standard JS errors 看看会发生什么。

    至于如何处理代码中try/catch 或.catch() 未处理的错误,您可以使用Node 的process 变量上的unhandledRejection 事件侦听器来处理大部分(如果不是全部)错误。

    process.on('unhandledRejection', error => {
        console.log('Test error:', error);
    });
    

    您可以在 discord.js 指南网站上查看示例 here。

    【讨论】:

      猜你喜欢
      • 2021-10-02
      • 2019-11-17
      • 2019-04-18
      • 2021-11-12
      • 2020-08-10
      • 2021-12-03
      • 2021-01-21
      • 2021-07-27
      • 2021-06-12
      相关资源
      最近更新 更多