Javascript - 错误处理停止代码
Javascript - error handling stopping code
快速基本问题,
当用discord.js v13设置guildmember.timout
时,它给出了一个用.then(console.log)
和.catch(console.error)
的例子。使用示例,代码将在 .catch.
之后继续
muteMember
.timeout(time, reason)
.catch((error) => {
return errors(client, message, args, "mute", error, true);
});
muteMember.send ...
目前它将 运行 errors
函数然后继续到 .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
语句仅 returns 出 #catch
回调。使用 #then
回调处理承诺,这就是您希望代码在成功时 运行 的位置。
muteMember
.timeout(time, reason)
.catch((error) => {
//error
errorcheck = true
return errors(client, message, args, "mute", error, true);
})
.then(() => {
//success
})
muteMember.timeout() returns a 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);
}
}
如果出现错误,你可以return设置为falsy,然后检查它是否是falsy,如果是return。
let isModified = await muteMember
.timeout(time, reason)
.catch((error) => {
errors(client, message, args, "mute", error, true)
return false;
})
if (!isModified) return;
快速基本问题,
当用discord.js v13设置guildmember.timout
时,它给出了一个用.then(console.log)
和.catch(console.error)
的例子。使用示例,代码将在 .catch.
muteMember
.timeout(time, reason)
.catch((error) => {
return errors(client, message, args, "mute", error, true);
});
muteMember.send ...
目前它将 运行 errors
函数然后继续到 .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
语句仅 returns 出 #catch
回调。使用 #then
回调处理承诺,这就是您希望代码在成功时 运行 的位置。
muteMember
.timeout(time, reason)
.catch((error) => {
//error
errorcheck = true
return errors(client, message, args, "mute", error, true);
})
.then(() => {
//success
})
muteMember.timeout() returns a 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);
}
}
如果出现错误,你可以return设置为falsy,然后检查它是否是falsy,如果是return。
let isModified = await muteMember
.timeout(time, reason)
.catch((error) => {
errors(client, message, args, "mute", error, true)
return false;
})
if (!isModified) return;