";输入字符串的格式不正确“;没有有意义的堆栈跟踪的错误消息

本文关键字:堆栈 有意义 跟踪 消息 错误 不正确 输入 quot 字符串 格式 | 更新日期: 2023-09-27 18:28:17

"输入字符串的格式不正确"-这可能是Stack Overflow中最重复的问题。

我有一个安装在全球10000台电脑上的Windows窗体应用程序,直到昨天我才看到这个错误。

一位用户最近报告了"输入字符串格式不正确"错误。他正在运行Windows7和.NET4。

让我困惑的是堆栈跟踪:

at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)    
at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)    
at System.ComponentModel.Int32Converter.FromString(String value, NumberFormatInfo formatInfo)    
at System.ComponentModel.BaseNumberConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)

这是整个堆栈跟踪。

也就是说,这个异常似乎不是源自我自己的任何代码。

我的问题:

有人能解释一下导致上述堆栈跟踪的my代码的可能程序流吗?(它没有显示我的任何代码)。

我仍然很困惑这怎么可能。

附加问题:

你知道这个错误的可能原因吗?或者如何获得错误的真正根本原因?

我可以考虑远程调试,但这对我来说似乎有些过头了。

更新1:

用户拥有德国文化("de-DE"),就像我们的大多数客户一样,也和我一样。

";输入字符串的格式不正确“;没有有意义的堆栈跟踪的错误消息

有人能解释一下我的代码中可能导致堆栈跟踪之上?(它没有显示我的任何代码)。你知道这个错误的可能原因吗?或者如何获得错误的真正根本原因?

我们需要查看您的代码来判断它出了什么问题。

为什么代码没有出现在堆栈中,一种可能的解释是库代码在单独的线程(或委托?)上运行。另一个原因可能是,例如,如果在构造控件时为其设置了输入验证掩码,那么当控件进行验证时,可能是在某个用户输入事件上,您的代码都不会成为堆栈跟踪的一部分。堆栈跟踪不显示任何调用的原因有很多。一种通用的表达方式是,当您的代码将数据传递给库代码,并且库基于一些完全独立的事件(如用户输入、计时器等)对其进行操作时。

我的方法是寻找在控件上完成的验证掩码等。还要检查某个委托上是否发生了任何数字解析类型的事情。重点关注用户可以键入数据的控制

此外,它是发布版本还是调试版本?堆栈跟踪中的调用是否可能在优化之后?

您还可以将一些变量信息添加到异常转储中。查看这篇文章:如何获得所有局部变量的转储?