क्या जावा के लिए C # समतुल्य विधि है Exception.printStackTrace()या क्या मुझे खुद को कुछ लिखना है, अपने तरीके से इनर एक्सिडेंस के माध्यम से काम करना है?
जवाबों:
इसे इस्तेमाल करे:
Console.WriteLine(ex.ToString());
से http://msdn.microsoft.com/en-us/library/system.exception.tostring.aspx :
ToString का डिफ़ॉल्ट कार्यान्वयन उस वर्ग का नाम प्राप्त करता है जिसने वर्तमान अपवाद को फेंक दिया, संदेश, आंतरिक अपवाद पर ToString को कॉल करने का परिणाम, और कॉल करने का परिणाम Environment.StackTrace। यदि इनमें से कोई भी सदस्य अशक्त है, तो उसका मान लौटाए गए स्ट्रिंग में शामिल नहीं है।
ध्यान दें कि उपरोक्त कोड में कॉल की ToStringआवश्यकता नहीं है क्योंकि इसमें एक अधिभार है जो सीधे लेता है System.Objectऔर कॉल ToStringकरता है।
जैसा कि ड्रू कहते हैं, बस अपवाद को परिवर्तित करना एक स्ट्रिंग ऐसा करता है। उदाहरण के लिए, यह कार्यक्रम:
using System;
class Test
{
static void Main()
{
try
{
ThrowException();
}
catch (Exception e)
{
Console.WriteLine(e);
}
}
static void ThrowException()
{
try
{
ThrowException2();
}
catch (Exception e)
{
throw new Exception("Outer", e);
}
}
static void ThrowException2()
{
throw new Exception("Inner");
}
}
इस उत्पादन का उत्पादन:
System.Exception: Outer ---> System.Exception: Inner
at Test.ThrowException2()
at Test.ThrowException()
--- End of inner exception stack trace ---
at Test.ThrowException()
at Test.Main()
http://msdn.microsoft.com/en-us/library/system.exception.stacktrace.aspx
Console.WriteLine (myException.StackTrace);
catch (Exception ex)
{
Console.WriteLine(ex.StackTrace);
}
क्या कोई C # लॉगिंग API नहीं है जो एक्सेप्शन को एक तर्क के रूप में ले सकता है और आपके लिए सब कुछ संभाल सकता है, जैसे कि Java's Log4J करता है?
यानी, Log4NET का उपयोग करें।
चूँकि @ रयान-कुक का जवाब मेरे लिए काम नहीं आया, अगर आप बिना किसी अपवाद के स्टैक ट्रेस प्रिंट करना चाहते हैं, तो आप उपयोग कर सकते हैं:
System.Diagnostics.StackTrace stackTrace = new System.Diagnostics.StackTrace();
Console.WriteLine(stackTrace)
दुर्भाग्य से, यह एक PCL में या .NETStandard लाइब्रेरी में नहीं किया जा सकता है