为什么在使用 Environment.Exit() 时需要 return,但对于抛出的异常则不需要?

Why is a return required when Environment.Exit() is used, but not for a thrown exception?

我正在尝试更好地理解 C# 的编译器。它坚持所有代码路径必须 return 一个值,我认为这很公平。

它还认识到,如果在需要 returned 值的路径中抛出异常,那么 returning 某些东西就没有意义了。这也有道理。

我的问题是:为什么这也不适用于以更优雅的方式退出程序?例如 Environment.Exit()

-例子-

这将编译:

private string TestMethod(int x, int y)
{
    if (x == y)
    {
        return "this is a string";
    }
    throw new Exception(); 
    // No point in a return after this, it could never be reached.
}

这不会编译:

private string TestMethod(int x, int y)
{
    if (x == y)
    {
        return "this is a string";
    }
    Environment.Exit(1);
    // This will not compile.
    // "Not all code paths return a value"
    // But, the code would never make it to the return here.
}
就编译器而言,

Environment.Exit 只不过是一种方法。

它强制 TestMethod return 一个值或抛出异常。调用一个 可能 终止应用程序或做一些完全不同的事情的方法不是从方法 "return" 的有效方法。