首页 > 解决方案 > “<8>”作为值是什么意思?

问题描述

我通过我内置的异常报告系统从 vb.net Windows Forms 应用程序中获取异常报告。一些用户收到异常消息“值对于小数而言太大或太小。无法在 PrdHrs 列中存储 <8>。预期类型为小数。”

包含的堆栈跟踪告诉我方法,并且该消息缩小了异常被命中的位置,但我无法弄清楚“<8>”的含义。这是否仅表示 8 的值,但它周围显示小于/大于符号?或者这是否意味着某种价值类型?谷歌基本上是不可能搜索到这个的。

标签: vb.netexception

解决方案


我怀疑“8”实际上是一个无穷大符号,但无论您看到什么,它都没有正确显示。我刚试过这段代码:

Dim dbl = Double.PositiveInfinity
Dim table As New DataTable

table.Columns.Add("Number", GetType(Decimal))

table.Rows.Add(dbl)

这是我收到的信息:

System.ArgumentException HResult=0x80070057 Message=Value 对于 Decimal 来说太大或太小。无法在数字列中存储 <∞>。预期类型为十进制。Source=System.Data
StackTrace:在 System.Data.DataColumn.set_Item(Int32 记录,对象值) 在 System.Data.DataTable.NewRecordFromArray(Object[] value) 在 System.Data.DataRowCollection.Add(Object[] values)在 C:\Users\johnm\AppData\Local\Temporary Projects\ConsoleApp1\Module1.vb:line 12 中的 ConsoleApp1.Module1.Main()

内部异常 1:OverflowException:对于 Decimal,值太大或太小。

Double使用值然后将结果存储为值并不理想Decimal。这可能是不可避免的,但如果是这样,您需要在验证方面做得更好。您可能正在除以零,这对于Double值是合法的并产生Double.PositiveInfinityor Double.NegativeInfinity


推荐阅读