如何在node.js中捕获错误?
这是我的密码:
const { Client, Message, MessageEmbed } = require("discord.js")
const translate = require('@iamtraction/google-translate')
module.exports = {
name: "ترجم",
description: `يترجم اللغه فقط أستعمل !translate "الكلمه/الجمله يلي بدك تترجمها"`,
aliases: ['translate'],
run: async (client, message, args) => {
const query = args.join(" ")
const lang = args[0]
if(!query) return message.reply('Please specify a text to translate');
const translated = await translate(query, { to: lang });
message.reply(translated.text);
},
};当我输入聊天时,它会工作:
!translate ar hello
但当我打字时:
!translate "not a real lang" hello
它因错误而关闭:
Error: The language 'not a real lang' is not supported
我尝试了.catch,我尝试了如果,否则,我尝试了try
发布于 2022-11-01 11:58:40
只有在没有发生错误时,async函数才返回值。如果出了问题,就会抛出错误,必须抓住它。
您使用await关键字调用错误的异步函数,因此必须用如下所示的try { } catch (e) {}块包围该函数:
try {
const translated = await translate(query, { to: lang });
message.reply(translated.text);
} catch (e) {
message.reply('Translation failed: ' + e.message);
}由于您处理了另一个可能的错误-上面的一行-您可以将整个事件包装成一个try-catch块,并以统一的方式处理所有类型的错误:
const { Client, Message, MessageEmbed } = require("discord.js")
const translate = require('@iamtraction/google-translate')
module.exports = {
name: "ترجم",
description: `يترجم اللغه فقط أستعمل !translate "الكلمه/الجمله يلي بدك تترجمها"`,
aliases: ['translate'],
run: async (client, message, args) => {
try {
const query = args.join(" ")
const lang = args[0]
if(!query) throw new Error('Please specify a text to translate');
const translated = await translate(query, { to: lang });
message.reply(translated.text);
} catch (e) {
if (message) {
message.reply('Translation failed: ' + e.message);
}
}
},
};这样,您将得到有意义的答复在任何情况下(只要你有一个有效的消息)。例如,也许args不是一个数组。
发布于 2022-11-01 16:23:30
要捕获node.js中的错误,通常可以这样做:
try {
// your code here
} catch (error){
console.error(error);
//your error response code here
}https://stackoverflow.com/questions/74275425
复制相似问题