【问题标题】:Need insight into what this new error means?需要深入了解这个新错误意味着什么?
【发布时间】:2012-07-19 01:46:11
【问题描述】:

这是一个 .NET 错误:

Error Message: String was not recognized as a valid Boolean.
Error Source : mscorlib

这听起来可能有点神秘,但这就是我要展示的全部内容。如何追溯发生的事情......我真的需要帮助,如果它以前没有出现过,怎么会出现,尽管应用程序是相同的。 谢谢

【问题讨论】:

  • C# 的哪一行失败了?你当时在做什么手术?不可能通过该错误消息知道会发生什么。
  • 我不相信这就是你必须展示的全部。你至少不能追溯到崩溃的代码行吗?
  • 应用程序是相同的,但数据可能不同:以前说的是TrueFalse,现在它说的是别的东西。
  • 您可以访问源代码吗?你能调试/跟踪吗?你能重现错误吗?您知道用户必须执行哪些步骤来重现错误吗?所有这些错误意味着在代码中的某个地方,它正在寻找一个应该是“真”或“假”的字符串,或者是非常有限的允许字符串值之一(大写可能会有所不同),并且它正在接收其他内容。它可能像拼写错误的配置值一样简单(例如,Testing="flase"),也可能来自用户输入、数据库等。除非您能找到有问题的行,否则您不会取得太大进展。
  • 有关将字符串转换为布尔值的更多信息,包括允许的值,请参见此处:msdn.microsoft.com/en-us/library/86hw82a3.aspx

标签: c# .net debugging error-handling


【解决方案1】:

使用bool.Parse() 时会出现此错误,并且该方法的输入无法转换为布尔值 true/false。

例如:

string testBool = "true";
bool validBool = bool.Parse(testBool);
// this passes fine

testBool = "asdf";
validBool = bool.Parse(testBool);
// Exception: String was not recognized as a valid Boolean.

如果您使用的是 .NET 4.0 或更高版本,则可以改用bool.TryParse();如果接收到无效输入,它不会抛出异常。否则,将语句包装在 try / catch 中以使用它。

【讨论】:

    猜你喜欢
    • 2018-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-10
    相关资源
    最近更新 更多