【问题标题】: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。