/Diagnostics/ExceptionExtensions.cs |
@@ -15,32 +15,31 @@ |
{ |
public static class ExceptionExtensions |
{ |
public static string PrettyPrint(this Exception x) |
public static string PrettyPrint(this Exception ex) |
{ |
var st = new StackTrace(x, true); |
if(ex == null) |
return string.Empty; |
|
var st = new StackTrace(ex, true); |
var frames = st.GetFrames(); |
if (frames == null) |
return string.Empty; |
|
StringBuilder sb = new StringBuilder(); |
sb.Append(Enumerable.Repeat('-', 75).ToArray()); |
var sb = new StringBuilder(); |
sb.Append(Environment.NewLine); |
|
int indent = 0; |
foreach (var frame in frames) |
{ |
if (frame.GetFileLineNumber() < 1) |
var fileName = frame?.GetFileName(); |
if (string.IsNullOrEmpty(fileName)) |
continue; |
|
sb.Append(Enumerable.Repeat(' ', indent).ToArray()); |
sb.Append(@" -> "); |
sb.Append(Enumerable |
.Repeat('-', System.Console.WindowWidth) |
.Concat(Environment.NewLine) |
.ToArray()); |
sb.Append("File: "); |
sb.Append(string.Join( |
Path.DirectorySeparatorChar.ToString(), |
frame.GetFileName() |
.Split(Path.DirectorySeparatorChar) |
.Reverse() |
.Take(2) |
.Reverse() |
) |
); |
sb.Append(fileName); |
sb.Append(@" Method: "); |
sb.Append(frame.GetMethod().Name); |
sb.Append(@" Line and Column : "); |
@@ -48,13 +47,18 @@ |
sb.Append(@":"); |
sb.Append(frame.GetFileColumnNumber()); |
sb.Append(Environment.NewLine); |
|
indent += 1; |
} |
|
sb.Append(Enumerable.Repeat('-', 75).ToArray()); |
sb.Append(x); |
sb.Append(Enumerable.Repeat('-', 75).ToArray()); |
sb.Append(Enumerable |
.Repeat('-', System.Console.WindowWidth) |
.Concat(Environment.NewLine) |
.ToArray()); |
sb.Append(ex); |
sb.Append(Environment.NewLine); |
sb.Append(Enumerable |
.Repeat('-', System.Console.WindowWidth) |
.Concat(Environment.NewLine) |
.ToArray()); |
|
return sb.ToString(); |
} |