Environment.StackTrace如何抛出ArgumentOutOfRangeException?

Ada*_*dam 5 .net c#

根据MSDN,Environment.StackTrace可以扔,ArgumentOutOfRangeException但我不明白这是怎么可能的.

Environment.cs StackTrace(来源)

public static String StackTrace {
    [System.Security.SecuritySafeCritical]
    get {
        Contract.Ensures(Contract.Result<String>() != null);

        new EnvironmentPermission(PermissionState.Unrestricted).Demand();
        return GetStackTrace(null, true);
    }
}
Run Code Online (Sandbox Code Playgroud)

调用GetStackTrace(Exception, bool)where Exception为null.

Environment.cs GetStackTrace(Exception, bool)(source)(删除了注释,它们无关紧要)

internal static String GetStackTrace(Exception e, bool needFileInfo)
{
    StackTrace st;
    if (e == null)
        st = new StackTrace(needFileInfo);
    else
        st = new StackTrace(e, needFileInfo);

    return st.ToString( System.Diagnostics.StackTrace.TraceFormat.Normal );
}
Run Code Online (Sandbox Code Playgroud)

上面的方法有可能调用两个构造函数StackTrace,StackTrace(bool)StackTrace(Exception, bool).

我们从第一次调用中知道,如果通过Environment.StackTrace调用达到此方法,则StackTrace(bool)保证调用.

但是StackTrace(bool)根据MSDN不会抛出任何异常.另一种可能的构造函数调用StackTrace(Exception, bool)(MSDN)会抛出异常,但事实ArgumentNullException并非如此ArgumentOutOfRangeException.我没有在代码中看到任何其他方法调用ArgumentOutOfRangeException.

那我错过了什么?是否有可能Environment.StackTrace抛出异常,如果是这样的话怎么样?

小智 3

事实上,检索属性值不应该引发异常。我们已从Environment.StackTrace 属性的文档中删除了异常信息。