জাভা'র সাথে কি সি # সমতুল্য পদ্ধতি আছে Exception.printStackTrace()
নাকি আমার নিজের কিছু লিখতে হবে, ইনারএক্সেপশনগুলির মাধ্যমে আমার পথে কাজ করছে?
উত্তর:
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
করে।
আমি যুক্ত করতে চাই: আপনি যদি কোনও ব্যতিক্রমের বাইরে স্ট্যাকটি মুদ্রণ করতে চান তবে আপনি এটি ব্যবহার করতে পারেন:
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()
http://msdn.microsoft.com/en-us/library/system.exception.stacktrace.aspx
কনসোল.ওরাইটলাইন (মাইএক্সেপশন.স্ট্যাকট্রেস);
catch (Exception ex)
{
Console.WriteLine(ex.StackTrace);
}
জাভা এর লগ 4 জে যেমন কোনও সি # লগিং এপিআই নেই যা একটি যুক্তি হিসাবে একটি ব্যতিক্রম গ্রহণ করতে পারে এবং আপনার জন্য সবকিছু হ্যান্ডেল করতে পারে?
অর্থাৎ লগ 4 নেট ব্যবহার করুন।
যেহেতু @ রায়ান-কুক উত্তরটি আমার পক্ষে কার্যকর হয়নি, আপনি যদি ব্যতিক্রম ছাড়াই স্ট্যাক ট্রেসটি মুদ্রণ করতে চান তবে আপনি ব্যবহার করতে পারেন:
System.Diagnostics.StackTrace stackTrace = new System.Diagnostics.StackTrace();
Console.WriteLine(stackTrace)
দুর্ভাগ্যক্রমে, এটি একটি পিসিএলে বা একটি .NETS স্ট্যান্ডার্ড লাইব্রেরিতে করা যায় না