コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
                }
            }
        }