Message
গভীর ব্যতিক্রমগুলির কেবলমাত্র অংশটি প্রিন্ট করার জন্য , আপনি এরকম কিছু করতে পারেন:
public static string ToFormattedString(this Exception exception)
{
IEnumerable<string> messages = exception
.GetAllExceptions()
.Where(e => !String.IsNullOrWhiteSpace(e.Message))
.Select(e => e.Message.Trim());
string flattened = String.Join(Environment.NewLine, messages); // <-- the separator here
return flattened;
}
public static IEnumerable<Exception> GetAllExceptions(this Exception exception)
{
yield return exception;
if (exception is AggregateException aggrEx)
{
foreach (Exception innerEx in aggrEx.InnerExceptions.SelectMany(e => e.GetAllExceptions()))
{
yield return innerEx;
}
}
else if (exception.InnerException != null)
{
foreach (Exception innerEx in exception.InnerException.GetAllExceptions())
{
yield return innerEx;
}
}
}
লাইন বিরতিতে সীমিত করে তাদের মধ্যে থাকা AggregateException
সমস্ত Message
সম্পত্তি মুদ্রণের জন্য এটি অভ্যন্তরীণ সমস্ত ব্যতিক্রমগুলি ( গুলি এর ক্ষেত্রে সহ ) অবিচ্ছিন্নভাবে যায় ।
যেমন
var outerAggrEx = new AggregateException(
"Outer aggr ex occurred.",
new AggregateException("Inner aggr ex.", new FormatException("Number isn't in correct format.")),
new IOException("Unauthorized file access.", new SecurityException("Not administrator.")));
Console.WriteLine(outerAggrEx.ToFormattedString());
বহিরাগত আগ্রাসী প্রাক্তন ঘটেছে।
অভ্যন্তরীণ আগর প্রাক্তন
সংখ্যাটি সঠিক ফর্ম্যাটে নেই।
অননুমোদিত ফাইল অ্যাক্সেস।
প্রশাসক নয়।
আপনার অন্যের কথা শুনতে হবে আরও বিশদের জন্য ব্যতিক্রম বৈশিষ্ট্যগুলি । যেমন Data
কিছু তথ্য থাকবে। আপনি করতে পারেন:
foreach (DictionaryEntry kvp in exception.Data)
সমস্ত উদ্ভূত বৈশিষ্ট্য (বেস Exception
শ্রেণিতে নয়) পেতে, আপনি এটি করতে পারেন:
exception
.GetType()
.GetProperties()
.Where(p => p.CanRead)
.Where(p => p.GetMethod.GetBaseDefinition().DeclaringType != typeof(Exception));