سؤال

هل هناك طريقة C # يعادل Exception.printStackTrace() جافا أو لا بد لي أن أكتب شيئا لنفسي، والعمل في طريقي من خلال InnerExceptions؟

هل كانت مفيدة؟

المحلول

وجرب هذا:

Console.WriteLine(ex.ToString());

http://msdn.microsoft.com/en -US / مكتبة / system.exception.tostring.aspx :

<اقتباس فقرة>   

وتطبيق الافتراضي من ToString يحصل على اسم الفئة التي رمى استثناء الحالي، الرسالة، نتيجة الاتصال ToString على الاستثناء الداخلي، ونتيجة الاتصال Environment.StackTrace. إذا كان أي من هؤلاء الأعضاء لاغيا، لا يتم تضمين قيمته في سلسلة عاد.

لاحظ أنه في رمز أعلاه غير مطلوب الدعوة إلى ToString كما هناك الزائد يأخذ System.Object ويدعو ToString مباشرة.

نصائح أخرى

وأود أن أضيف: إذا كنت ترغب في طباعة كومة خارج استثناء، يمكنك استخدام:

Console.WriteLine(System.Environment.StackTrace);

وكما يقول درو، مجرد تحويل استثناء سلسلة يفعل هذا. على سبيل المثال، وهذا البرنامج:

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()
  catch (Exception ex)
{
    Console.WriteLine(ex.StackTrace);
}

هل هناك C # تسجيل API التي يمكن أن تتخذ استثناء كحجة والتعامل مع كل شيء بالنسبة لك، مثل Log4J جاوة يفعل؟

و. أي بمعنى، استخدام Log4NET.

وننظر أيضا في Log4Net ... في ميناء Log4J إلى .NET.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top