如何修复“无法从'布尔'转换为'字符串'”错误?

时间:2019-07-28 02:02:41

标签: c#

我正在尝试修改现有的Discord机器人,并且在尝试运行它时遇到此错误。当它验证邮件是否是从漫游器发送时,我正在尝试做一个例外。

import subprocess

subprocess.call(['C:\Windows\System32\notepad.exe'])

1 个答案:

答案 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后面没有{ }语句,则仅将下一行视为条件代码的一部分。 (forforeach等是正确的-请详细了解"embedded statements" here

换句话说,这等同于您拥有的东西:

if (msg.Author.IsBot || !_bot.Ready.Task.IsCompleted) {
    throw new ArgumentNullException(msg.Author.Id == 1234)
}
return;

它将抛出异常或返回。返回之后的所有代码将永远无法到达。我认为那不是你想要的。

这是我总是在单行代码块周围使用花括号的原因之一。