Что означает «<8>» в качестве значения? - PullRequest
0 голосов
/ 21 февраля 2020

Я получаю отчет об исключении из vb. net Windows Приложение Forms, которое я создал через встроенную в него систему отчетов об исключениях. Некоторые пользователи получают исключение с сообщением «Значение было слишком большим или слишком маленьким для десятичного числа. Не удалось сохранить <8> в столбце PrdHrs. Ожидаемый тип - десятичное.»

Включенная трассировка стека говорит мне метод и это сообщение сужаются там, где происходит исключение, но я не могу понять, что означает «<8>». Означает ли это просто значение 8, но оно отображается с символами меньше / больше, чем вокруг? Или это подразумевает определенный тип значения? Google в принципе невозможно найти это.

1 Ответ

4 голосов
/ 21 февраля 2020

Я подозреваю, что «8» на самом деле является символом бесконечности, но он не отображается должным образом в том, что вы видите. Я только что попробовал этот код:

Dim dbl = Double.PositiveInfinity
Dim table As New DataTable

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

table.Rows.Add(dbl)

, и это было сообщение, которое я получил:

System.ArgumentException HResult = 0x80070057 Сообщение = Значение было слишком большим или слишком маленьким для Десятичное число. Не удалось сохранить <∞> в числовом столбце. Ожидаемый тип - Десятичный. Source = System.Data
StackTrace: в System.Data.DataColumn.set_Item (запись Int32, значение объекта) в System.Data.DataTable.NewRecordFromArray (значение Object []) в System.Data.DataRowCollection.Add (Object [ ] значений) в ConsoleApp1.Module1.Main () в C: \ Users \ johnm \ AppData \ Local \ Временные проекты \ ConsoleApp1 \ Module1.vb: строка 12

Внутреннее исключение 1: OverflowException: значение было либо слишком большое, либо слишком маленькое для десятичного числа.

Не идеально, если вы работаете со значениями Double и затем сохраняете результаты в виде значений Decimal. Это может быть неизбежно, но, если это так, вам нужно сделать немного лучше при проверке. Вы, вероятно, делите на ноль, что допустимо для Double значений и дает либо Double.PositiveInfinity, либо Double.NegativeInfinity.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...