Я испытываю неожиданное поведение и надеюсь, что кто-то может помочь с некоторыми советами относительно того, на каких областях сосредоточить расследование.
У меня есть два метода, один по существу выполняет тест деления на ноль для двойника, второй вызывает метод extern
для неуправляемой DLL.
Примечание: В среде выполнения .Net деление Double на ноль должно возвращать значение Infinity (забавно, с положительным или отрицательным оттенком).
Псевдокод того, что я делаю, выглядит примерно так:
InfinityTest(); // Returns an Infinity value as expected
DllCall();
InfinityTest(); // Divide by zero error on second call.
Первый вызов InfinityTest ()
возвращает значение Infinity, как и ожидалось. Второй вызов InfinityTest ()
вызывает исключение Divide by Zero, которого я не ожидал.
Обновление
Эффективный код InfinityTest ()
ниже. Для краткости я удалил элементы try / catch и т. Д. У меня нет разрешения подробно рассказывать об элементе псевдокода DllCall ()
, извиняюсь.
private double InfinityTest()
{
double a = 1.0;
int b = 0;
return a / b;
}