【发布时间】:2010-12-16 14:21:23
【问题描述】:
代码在 VS2008 中针对 .NET3.5 编译。这在我的系统上无法重现。我怀疑某种本地化设置在起作用,但我对此了解不多。
所有其他有效数字似乎都可以正常工作。此代码说明了该错误(导致相同的异常但不是生产代码):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
string str = "";
do
{
str = Console.ReadLine();
Console.WriteLine("\t\"{0}\"", Convert.ToDouble(str));
}
while (str != null);
}
}
}
在命令行中,输入“0”会使应用程序在我遇到的至少一个系统上崩溃。
来自用户 PC 的堆栈跟踪:
System.FormatException: Input string was not in a correct format.
at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
at System.Number.ParseDouble(String value, NumberStyles options, NumberFormatInfo numfmt)
at System.Double.Parse(String s, NumberStyles style, NumberFormatInfo info)
at System.Convert.ToDouble(String value)
【问题讨论】:
-
崩溃是什么意思?您没有收到任何错误消息或任何类型的堆栈跟踪?
-
您盲目地将控制台输入转换为双精度。您是否尝试过首先使用
Double.TryParse()验证其编号? -
Crash 是指未正确处理的异常。我得到了堆栈跟踪,但请记住,这是用户的 PC,我无法在我的机器上重现该问题。
-
@pomeroy,什么堆栈跟踪?什么例外?在什么输入上?在什么地区?
-
也许有人只是对您的用户进行了恶作剧,并将他的
0键重新映射到角色O。
标签: c# crash formatexception