我正在尝试修改现有的Discord机器人,并且在尝试运行它时遇到此错误。当它验证邮件是否是从漫游器发送时,我正在尝试做一个例外。
import subprocess
subprocess.call(['C:\Windows\System32\notepad.exe'])
答案 0 :(得分:4)
您遇到了几个问题。
第一:
throw new ArgumentNullException(msg.Author.Id == 1234)
constructor for ArgumentNullException
采用一个string
,该假设应该是“引起异常的参数的名称”。您正在给它一个bool
。
但是您只有一个参数,通过这一行,您已经知道它不为null。因此,也许ArgumentException
更合适,并写一个句子来说明为什么不接受该参数。
第二,我认为这不符合您的想法:
if (msg.Author.IsBot || !_bot.Ready.Task.IsCompleted) //no bots, wait until bot connected and initialized
throw new ArgumentNullException(msg.Author.Id == 1234)
return;
如果if
后面没有{ }
语句,则仅将下一行视为条件代码的一部分。 (for
,foreach
等是正确的-请详细了解"embedded statements" here)
换句话说,这等同于您拥有的东西:
if (msg.Author.IsBot || !_bot.Ready.Task.IsCompleted) {
throw new ArgumentNullException(msg.Author.Id == 1234)
}
return;
它将抛出异常或返回。返回之后的所有代码将永远无法到达。我认为那不是你想要的。
这是我总是在单行代码块周围使用花括号的原因之一。