根据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).
我们从第一次调用中知道,如果通过 …