通过NUnit运行以下C#代码会产生
Test.ControllerTest.TestSanity: Expected: `<System.DivideByZeroException>` But was: null
因此,要么不会引发DivideByZeroException,要么NUnit不会捕获它。与this问题类似,但他得到的答案似乎对我不起作用。这使用的是NUnit 2.5.5.10112和.NET 4.0.30319。
[Test]
public void TestSanity()
{
Assert.Throws<DivideByZeroException>(new TestDelegate(() => DivideByZero()));
}
private void DivideByZero()
{
// Parse "0" to make sure to get an error at run time, not compile time.
var a = (1 / Double.Parse("0"));
}
有任何想法吗?
最佳答案
没有异常被抛出。 1/0.0只会给你double.PositiveInfinity。这就是IEEE 754标准所指定的,遵循的是C#(基本上是其他所有系统)。
如果要在浮点除法代码中出现异常,请显式检查零,然后自己将其抛出。如果您只想看看DivideByZeroException将为您带来什么,请手动将其抛出,或者将整数除以整数零。