2008-12-02 17 views

उत्तर

87

इस प्रयास करें:

ToString के डिफ़ॉल्ट कार्यान्वयन वर्ग है कि मौजूदा अपवाद, संदेश, पर ToString बुला का परिणाम फेंक दिया के नाम प्राप्त:

Console.WriteLine(ex.ToString()); 

http://msdn.microsoft.com/en-us/library/system.exception.tostring.aspx से आंतरिक अपवाद, और पर्यावरण कॉल करने का नतीजा। स्टैकट्रेस। यदि इनमें से कोई भी सदस्य शून्य है, तो उसका मान लौटाई गई स्ट्रिंग में शामिल नहीं है।

नोट के रूप में वहाँ एक अधिभार कि System.Object लेता है और सीधे ToString कॉल है कि उपरोक्त कोड में ToString करने के लिए कॉल की आवश्यकता नहीं है।

0

क्या कोई सी # लॉगिंग एपीआई नहीं है जो एक अपवाद के रूप में अपवाद ले सकता है और आपके लिए सब कुछ संभाल सकता है, जैसे कि जावा के लॉग 4 जे करता है?

आईई, Log4NET का उपयोग करें।

+0

अच्छा सवाल :) – Epaga

+3

यह एक अच्छा सवाल है, लेकिन यह एक अच्छा जवाब नहीं है –

+0

मुझे लगता है कि यह बताता है कि क्यों माइक्रोसॉफ्ट ने सी # में ऐसी कार्यक्षमता प्रदान नहीं की है जो जावा ने किया था (पुरानी भाषा को अधिक सरल समय में विकसित किया गया है)। यानी, एक बेहतर तरीका है जिसकी सिफारिश की जाती है। – JeeBee

1
catch (Exception ex) 
{ 
    Console.WriteLine(ex.StackTrace); 
} 
+1

इसमें संदेश या आंतरिक अपवाद विवरण शामिल नहीं होंगे। –

+0

गोचा। जानकारी के लिए धन्यवाद। –

9

जैसा कि ड्रू कहते हैं, बस अपवाद को परिवर्तित करना एक स्ट्रिंग करता है। उदाहरण के लिए, इस कार्यक्रम:

System.Exception: Outer ---> System.Exception: Inner 
    at Test.ThrowException2() 
    at Test.ThrowException() 
    --- End of inner exception stack trace --- 
    at Test.ThrowException() 
    at Test.Main() 
-1

इसके अलावा नेट के लिए Log4J की अपनी एक बंदरगाह पर log4net ... देखो:

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"); 
    } 
} 

इस उत्पादन उत्पन्न करता है। आप एक अपवाद के बाहर ढेर प्रिंट करना चाहते हैं, तो आप उपयोग कर सकते हैं:

69

मैं जोड़ना चाहते हैं

Console.WriteLine(System.Environment.StackTrace); 
+0

अद्भुत। यह बहुत मदद करता है। बहुत धन्यवाद रयान – siddhusingh

संबंधित मुद्दे