Zero division wirft keine Exception in nunit

8

Das Ausführen des folgenden C # -Codes durch NUnit ergibt

%Vor%

Entweder wird keine DivideByZeroException ausgelöst, oder NUnit fängt sie nicht ab. Ähnlich wie diese Frage, aber die Antworten, die er bekam, tun scheint nicht für mich zu arbeiten. Dies verwendet NUnit 2.5.5.10112 und .NET 4.0.30319.

%Vor%

Irgendwelche Ideen?

    
Boris 31.05.2010, 19:43
quelle

2 Antworten

21

Es wird keine Ausnahme ausgelöst. 1 / 0.0 gibt Ihnen einfach double.PositiveInfinity. Dies ist, was der IEEE 754 Standard spezifiziert, welcher C # (und im Grunde jedes andere System) folgt.

Wenn Sie eine Ausnahme im Fließkomma-Divisionscode wünschen, prüfen Sie explizit auf Null und werfen Sie es selbst. Wenn Sie nur sehen wollen, was DivideByZeroException Ihnen bringt, werfen Sie es entweder manuell oder teilen ganze Zahlen durch Ganzzahl Null.

    
Joren 31.05.2010, 19:46
quelle
7

Von MSDN :

  

Die Ausnahme, die ausgelöst wird, wenn versucht wird, einen Integral- oder Dezimalwert durch Null zu teilen.

Sie haben es mit double, nicht mit den ganzzahligen Typen ( int etc) oder decimal zu tun. double löst hier keine Ausnahme aus, auch nicht in einem checked -Kontext. Du bekommst einfach + INF.

Wenn Sie als ganzzahlige Mathematik (und erhalten Sie die Ausnahme) auswerten möchten, verwenden Sie:

%Vor%     
Marc Gravell 31.05.2010 19:48
quelle