Niektóre funkcje matematyczne w programie, który napisałem ostatnio, zwracają niedopuszczalne wartości, takie jak NaN (prawdopodobnie z powodu braku sprawdzenia niektórych parametrów wejściowych funkcji). Problem polega na tym, że dość trudno jest wyśledzić, które funkcje przekazują błędne wartości. Powoduje to, że błędy są propagowane w całym kodzie i powodują, że program ulega awarii w kilka minut lub kilka godzin później, jeśli w ogóle.Jak wymusić na kompilatorze C# wyrzucenie wyjątku, gdy jakakolwiek operacja matematyczna generuje "NaN"?
Zastanawiam się, czy istnieje sposób na złapanie tych wadliwych operacji w momencie, gdy wartość NaN wynika z jakiejkolwiek operacji (prawie tak samo, jak w "Wyjątku DivisionByZero" wyrzucanym przez niektóre kompilatory C/C++, jeśli pamiętam).
Z góry dziękuję.
P.D: W razie potrzeby możesz ponownie oznaczyć moje pytanie.
Co powoduje awarię? –
Wydaje mi się, że tak jest w przypadku, gdy należy rozważyć włączenie testów do rozwoju. Jeśli twoje funkcje matematyczne nie są zbyt liczne, możesz chcieć poprawnie zdefiniować warunki wstępne i końcowe oraz napisać dla nich testy, aby uniknąć ich powrotu na NaN. – Frank
W tym przypadku dostęp do tablicy, w której indeks = (long) NaNvalue, ale mógł to być cokolwiek innego. – Trap