![](/img/trans.png)
[英]Stop the wrest of the javascript code when it encounters a error without stopping the entire bot
[英]Javascript - error handling stopping code
快速的基本问题,
我正在使用 discord.js v13 设置guildmember.timout
,我正在尝试在这里正确使用.catch。 出于某种原因,如果代码抛出错误,我无法弄清楚如何结束。
muteMember
.timeout(time, reason)
.catch((error) => {
return errors(client, message, args, "mute", error, true);
});
muteMember.send ...
目前它将运行错误 function 然后继续执行.catch 之后的代码,例如muteMember.send
。 在运行.catch 内部的内容后让它“停止”的最佳方法是什么? 先感谢您
您可以将 async-await 与 try-catch 一起使用:
async function myFunction() { try { await muteMember.timeout(time, reason) // throws an error if it fails -- jumps to the catch block muteMember.send... } catch(error) { errorcheck = true errors(client, message, args, "mute", error, true); // and whatever other error handling you would like } }
return
语句仅从#catch
回调中返回。 使用#then
回调处理 promise,这就是您希望代码在成功时运行的位置。
muteMember
.timeout(time, reason)
.catch((error) => {
//error
errorcheck = true
return errors(client, message, args, "mute", error, true);
})
.then(() => {
//success
})
muteMember.timeout() 返回Promise ,因此您想要在 promise 解析后运行的任何代码都应该包含在 then() 块中:
muteMember
.timeout(time, reason)
.then((member) => {
// code that depends on successfully timing out a member
muteMember.send....
})
.catch((error) => {
// only runs if there's an error
errorcheck = true
return errors(client, message, args, "mute", error, true);
});
您还可以使用更现代、更易读的async/await语法:
const myAsyncFunction = async () => {
try {
const member = await muteMember.timeout(time, reason);
// code that depends on successfully timing out a member
muteMember.send....
} catch (error) {
// only runs if there's an error
errorcheck = true
return errors(client, message, args, "mute", error, true);
}
}
如果错误发生,你可以让它返回一个 falsy,然后检查它是否是 falsy,如果是则返回。
let isModified = await muteMember
.timeout(time, reason)
.catch((error) => {
errors(client, message, args, "mute", error, true)
return false;
})
if (!isModified) return;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.