通过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将为您带来什么,请手动将其抛出,或者将整数除以整数零。

10-05 23:46