You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已添加catch仍报'missing catch or finally after try'错误的解决方法

修复'missing catch or finally after try'错误

问题出在代码的语法结构上:你的try块被包含在if(langlist.find(c => c === language))的代码块内部,但catch块却写在了这个if块的外面,JavaScript要求try必须和对应的catch/finally处于同一代码层级,不能被其他代码块的大括号分隔开,这直接导致了语法报错。

另外你的代码末尾存在多余的闭合大括号,也需要一并清理。

修正后的代码

const {getAudioUrl} = require("google-tts-api") 
const langlist = ["en", "id"]

let language = args[0]
if(langlist.find(c => c === language)) {
  if(!language) return message.reply("Please enter the language") 

  if(!args[1]) return message.reply("Please enter the text")
  const text = args.slice(1).join(" ")
  if(text.length > 200) return message.reply('You cant input a text with over 200 characters')
  const voiceChannel = message.member.voice.channel
  if(!voiceChannel) return message.reply(" Please enter a voice channel") 

  const audioURL = await getAudioUrl(text, {
    lang: language, 
    slow: false, 
    host: 'https://translate.google.com', 
    timeout: '150000'
  })

  try {
    voiceChannel.join().then(connection => {
      const dispatcher = connection.play(audioURL)
      dispatcher.on('finish', () => {
        voiceChannel.leave()
      })
    })
  } catch(err){
    console.log(err)
    message.channel.send("There is an error")
  }
} else { 
  return message.reply(`That language is not supported, the current supported language : [${langlist.join(", ")}]`)
}

关键修正点

  • 将catch块移动到try块的直接下方,确保两者处于if(langlist.find(...))代码块的内部,保持语法层级一致
  • 移除了代码末尾多余的两个闭合大括号,修复了代码结构不匹配的问题
  • 调整了代码缩进,提升可读性

内容的提问来源于stack exchange,提问作者Taf not a coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 21:57:42