using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; #pragma warning disable CS8604 // Possible null reference argument. namespace EasyDevCore.Common { /// /// /// public static class ExceptionHelper { /// /// Gets the stack trace of exception. /// /// The ex. /// The MSG. private static void GetExceptionStackTrace(Exception ex, ref StringBuilder msg) { msg.Append(ex.StackTrace); if (ex.InnerException != null) { msg.AppendLine(ex.InnerException.Message); GetExceptionStackTrace(ex.InnerException, ref msg); } } /// /// Gets the stack trace of exception. /// /// The ex. /// private static string GetExceptionStackTrace(Exception ex) { StringBuilder msg = new StringBuilder(); GetExceptionStackTrace(ex, ref msg); return msg.ToString(); } /// /// Gets the exception info. /// /// The exception. /// public static string GetMessagesDetail(this Exception exception) { if (exception != null) { StringBuilder buidler = new StringBuilder(); buidler.AppendLine(string.Format("---- Begin of Exception -----", exception.Message)); buidler.AppendLine(string.Format("+ Message : {0}", exception.Message)); buidler.AppendLine(string.Format("+ Source : {0}", exception.Source)); buidler.AppendLine(string.Format("+ Stack : {0}", exception.StackTrace)); buidler.AppendLine(string.Format("+ Target : {0}", (exception.TargetSite == null ? "?" : exception.TargetSite.ToString()))); buidler.AppendLine(string.Format("+ Helplink : {0}", exception.HelpLink)); buidler.AppendLine("+ Stack : "); buidler.AppendLine("----- Begin of exception stack -----"); buidler.AppendLine(GetExceptionStackTrace(exception)); buidler.AppendLine("----- End of exception stack -----"); if (exception.Data != null && exception.Data.Keys.Count > 0) { buidler.AppendLine("----- Begin of exception data info -----"); foreach (var key in exception.Data.Keys) { buidler.AppendLine(string.Format(">>>>>>>>>> [{0}] <<<<<<<<<<", key)); buidler.AppendLine(string.Format("{0}", exception.Data[key])); buidler.AppendLine(string.Format("^^^^^^^^^^ [{0}] ^^^^^^^^^^", key)); buidler.AppendLine(string.Format("---- End of Exception -----", exception.Message)); } buidler.AppendLine("----- End of exception data info -----"); } buidler.AppendLine(string.Format("---- End of Exception -----", exception.Message)); return buidler.ToString(); } return string.Empty; } } }