MSDN के अनुसार, Environment.StackTrace
ArgumentOutOfRangeException
फेंक सकता है लेकिन मुझे नहीं पता कि यह कैसे संभव है।पर्यावरण कैसे हो सकता है। स्टैकट्रेस ArgumentOutOfRangeException फेंक देता है?
Environment.cs StackTrace
(source)
public static String StackTrace {
[System.Security.SecuritySafeCritical]
get {
Contract.Ensures(Contract.Result<String>() != null);
new EnvironmentPermission(PermissionState.Unrestricted).Demand();
return GetStackTrace(null, true);
}
}
कॉल GetStackTrace(Exception, bool)
जहां Exception
रिक्त है।
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);
}
उपरोक्त विधि संभावित StackTrace
, StackTrace(bool)
और StackTrace(Exception, bool)
के दो निर्माताओं के कॉल करने के लिए है।
हम पहली कॉल से जानते हैं कि यदि यह विधि Environment.StackTrace
कॉल के माध्यम से पहुंची है तो StackTrace(bool)
कहने की गारंटी है।
लेकिन StackTrace(bool)
MSDN के अनुसार कोई अपवाद नहीं फेंकता है। अन्य संभावित कन्स्ट्रक्टर कॉल, StackTrace(Exception, bool)
(MSDN) एक अपवाद फेंकता है, लेकिन यह ArgumentNullException
ArgumentOutOfRangeException
नहीं है। मुझे कोड में किए गए किसी अन्य विधि कॉल को नहीं देखा गया है जो ArgumentOutOfRangeException
फेंक देगा।
तो मुझे क्या याद आ रही है? क्या यह वास्तव में Environment.StackTrace
के लिए अपवाद फेंकने के लिए संभव है और यदि ऐसा है तो कैसे?
मुझे पता है कि 'नया स्टैकट्रेस (int)' ऐसा कर सकता है, लेकिन यह सुनिश्चित नहीं है कि यह 'पर्यावरण। स्टैकट्रेस' पर प्रचार कैसे करेगा। शायद ये कुछ स्वचालित उपकरण से दिखाए जाते हैं। https://msdn.microsoft.com/en-us/library/wybch8k4(v=vs.110).aspx – leppie
@leppie मैंने यह भी देखा, 'skipframes' का उपयोग करने वाली विधियां 'Stacktrace.cs' में एकमात्र स्थान थीं जो 'ArgumentOutOfRangeException' फेंक देगा, लेकिन जहां तक मैं सीधे 'Environment.StackTrace' से किए गए कॉल देख सकता हूं,' skipFrames' पैरामीटर का उपयोग करने वाली किसी भी विधि को हिट नहीं करता है। – Adam
एमएसडीएन लेखों में अपवाद जानकारी सामान्य अविश्वसनीय है। यह हमेशा अधूरा होता है और कॉपी/पेस्ट कीड़े से पीड़ित होता है। उन लेखों को ठीक करना मुश्किल है, अगर किसी को कभी भी अपवाद का सामना नहीं करना पड़ता है तो कोई भी कभी भी एक दस्तावेज अपवाद को हटाने के लिए नहीं सोचता है। –