using System; using System.Collections; using System.Text; namespace Kreta.Framework.Exceptions { /// /// Kivételek segédosztálya. /// public static class ExceptionUtil { /// /// Ember számára olvasható karakterlánccá alakít egy kivételt. /// /// A kivétel /// /// A visszatérési érték tartalmazza a kivétel osztályának a nevét, a kivétel üzenetét, a kivétel vermét, és a belső kivételt. /// public static string ExceptionToString(Exception exception) { if (exception == null) { return ""; } StringBuilder builder = new StringBuilder(); builder.Append(exception); for (Exception innerException = exception; innerException != null; innerException = innerException.InnerException) { if (innerException == exception) { builder.Append(Environment.NewLine); builder.AppendLine("Data:"); } else { builder.Append(Environment.NewLine); builder.Append("Inner exception data:"); } foreach (DictionaryEntry entry in exception.Data) { string key = entry.Key.ToString(); if (key.StartsWith("$", StringComparison.OrdinalIgnoreCase) || entry.Value == null) { continue; } builder.AppendFormat("{0}={1}", key, entry.Value); builder.AppendLine(); } } TypeLoadException typeLoadException = exception as TypeLoadException; // ReSharper disable once InvertIf if (typeLoadException != null) { builder.AppendFormat("Type: {0}", typeLoadException.TypeName); builder.AppendLine(); } return builder.ToString(); } } }