সি # জাভার এক্সেপশন.প্রিন্টস্ট্যাকট্রেসের সমতুল্য ()?


84

জাভা'র সাথে কি সি # সমতুল্য পদ্ধতি আছে Exception.printStackTrace()নাকি আমার নিজের কিছু লিখতে হবে, ইনারএক্সেপশনগুলির মাধ্যমে আমার পথে কাজ করছে?

উত্তর:


121

Try this:

Console.WriteLine(ex.ToString());

From http://msdn.microsoft.com/en-us/library/system.exception.tostring.aspx:

The default implementation of ToString obtains the name of the class that threw the current exception, the message, the result of calling ToString on the inner exception, and the result of calling Environment.StackTrace. If any of these members is null, its value is not included in the returned string.

নোট করুন যে উপরের কোডটিতে কল করার ToStringপ্রয়োজন নেই কারণ সেখানে একটি ওভারলোড রয়েছে যা সরাসরি গ্রহণ করে System.Objectএবং কল ToStringকরে।


4
লিনাক্সে নেট কোর ২.১ এ কেবল এটি চেষ্টা করে দেখে মনে হচ্ছে এটি আর সত্য নয়
সিলারার

104

আমি যুক্ত করতে চাই: আপনি যদি কোনও ব্যতিক্রমের বাইরে স্ট্যাকটি মুদ্রণ করতে চান তবে আপনি এটি ব্যবহার করতে পারেন:

Console.WriteLine(System.Environment.StackTrace);

10

যেমন ড্রু বলেছেন, কেবল ব্যতিক্রম রূপান্তরকরণ একটি স্ট্রিং এটি করে। উদাহরণস্বরূপ, এই প্রোগ্রাম:

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()



0

জাভা এর লগ 4 জে যেমন কোনও সি # লগিং এপিআই নেই যা একটি যুক্তি হিসাবে একটি ব্যতিক্রম গ্রহণ করতে পারে এবং আপনার জন্য সবকিছু হ্যান্ডেল করতে পারে?

অর্থাৎ লগ 4 নেট ব্যবহার করুন।


আমি মনে করি এটি জাফায়ার সি # তে মাইক্রোসফ্ট কেন এই জাতীয় কার্যকারিতা সরবরাহ করতে পারে নি কেবল এটি উল্লেখ করেছে (আরও সাধারণ সময়ে উন্নত প্রাচীন ভাষা হওয়ায়)। অর্থাৎ, আরও ভাল উপায় রয়েছে যা সুপারিশ করা হয়।
জিবি

0

যেহেতু @ রায়ান-কুক উত্তরটি আমার পক্ষে কার্যকর হয়নি, আপনি যদি ব্যতিক্রম ছাড়াই স্ট্যাক ট্রেসটি মুদ্রণ করতে চান তবে আপনি ব্যবহার করতে পারেন:

System.Diagnostics.StackTrace stackTrace = new System.Diagnostics.StackTrace();
Console.WriteLine(stackTrace)

দুর্ভাগ্যক্রমে, এটি একটি পিসিএলে বা একটি .NETS স্ট্যান্ডার্ড লাইব্রেরিতে করা যায় না


-1

এছাড়াও লগ 4 নেট দেখুন ... এটি লগ 4 জ টু নেট থেকে একটি নেট বন্দর N

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.