private static void ExceptionDescriptorExporter()

in sdk/src/Core/Internal/Emitters/JsonSegmentMarshaller.cs [249:306]


        private static void ExceptionDescriptorExporter(ExceptionDescriptor descriptor, JsonWriter writer)
        {
            writer.WriteObjectStart();  // exception
            writer.WritePropertyName("id");
            writer.Write(descriptor.Id);

            writer.WritePropertyName("message");
            writer.Write(descriptor.Message);

            writer.WritePropertyName("type");
            writer.Write(descriptor.Type);

            writer.WritePropertyName("remote");
            writer.Write(descriptor.Remote);

            writer.WritePropertyName("stack");

            writer.WriteArrayStart();   // stack

            StackFrame[] frames = descriptor.Stack;
            if (frames != null)
            {
                foreach (StackFrame frame in frames)
                {
                    writer.WriteObjectStart();  // trace
                    writer.WritePropertyName("path");
                    writer.Write(frame.GetFileName());
                    writer.WritePropertyName("line");
                    writer.Write(frame.GetFileLineNumber());
                    writer.WritePropertyName("label");
                    MethodBase method = frame.GetMethod();
                    string label = method.Name;
                    if (method.ReflectedType != null)
                    {
                        label = method.ReflectedType.FullName + "." + label;
                    }

                    writer.Write(label);
                    writer.WriteObjectEnd();    // trace
                }
            }

            writer.WriteArrayEnd();     // stack

            if (descriptor.Truncated > 0)
            {
                writer.WritePropertyName("truncated");
                writer.Write(descriptor.Truncated);
            }

            if (descriptor.Cause != null)
            {
                writer.WritePropertyName("cause");
                writer.Write(descriptor.Cause);
            } 
            
            writer.WriteObjectEnd();    // exception
        }