я использую
Decimal.Round(decimal d)
MSDN говорит, что может выдать OverflowException
https://msdn.microsoft.com/en-us/library/k4e2bye2(v=vs.110).aspx
Я не уверен, как это может произойти. Я попытался просмотреть реализацию с помощью ilSpy и дошел до внешней реализации:
// decimal
[SecurityCritical]
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void FCallRound(ref decimal d, int decimals);
Кто-нибудь понял, какой ввод может вызвать это исключение?
OverflowException
в строке 188. - person James Thorpe   schedule 20.02.2017VarDecRound
. На первый взгляд, я не понимаю, почему он возвращает результат сбоя вFCallRound
(что приводит к возникновению исключения). Он либо возвращаетE_INVALIDARG
, но условие для этого уже провереноFCallRound
, либоNOERROR
, поэтому кажется, чтоOverflowException
на самом деле никогда не должно быть выброшено. - person James Thorpe   schedule 20.02.2017