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