public static void DefaultRenderer(StringBuilder buffer, Exception exc, string indent, ExceptionPropertyRenderer message, ExceptionPropertyRenderer stackTrace, ExceptionRendererCallback recursive) { buffer.Append(indent); message(buffer, exc, indent); buffer.AppendLine(); buffer.Append(indent); stackTrace(buffer, exc, indent); buffer.AppendLine(); if (exc.InnerException != null) { buffer.Append(indent); buffer.Append("inner exception: "); buffer.AppendLine(); recursive(buffer, exc.InnerException, indent + MORE_INDENT, message, stackTrace, recursive); } }
public void RecursiveRenderer(StringBuilder buffer, Exception exc, string indent, ExceptionPropertyRenderer message, ExceptionPropertyRenderer stackTrace, ExceptionRendererCallback recursive) { if (exc == null) { return; } for (int i = 0, n = _renderers.Count; i < n; i++) { var r = _renderers[i]; if (exc.GetType().IsInstanceOfType(r.Criteria)) { r.Callback(buffer, exc, indent, message, stackTrace, recursive); return; } } DefaultRenderer(buffer, exc, indent, message, stackTrace, recursive); }
public static void AggregateExceptionRenderer(StringBuilder buffer, Exception exc, string indent, ExceptionPropertyRenderer message, ExceptionPropertyRenderer stackTrace, ExceptionRendererCallback recursive) { var ag = exc as AggregateException; if (ag == null) { throw new InvalidCastException("Expected AggregateException but got " + exc.GetType().AssemblyQualifiedName); } buffer.Append(indent); message(buffer, exc, indent); buffer.AppendLine(); buffer.Append(indent); stackTrace(buffer, exc, indent); buffer.AppendLine(); if (ag.InnerExceptions != null) { foreach (var inner in ag.InnerExceptions) { buffer.Append(indent); buffer.Append("inner exception: "); buffer.AppendLine(); recursive(buffer, exc.InnerException, indent + MORE_INDENT, message, stackTrace, recursive); } } }