Table of Contents

ExceptionConverter Class

Definition

Provides an Exception converter that can be configured like the Newtonsoft.JSON equivalent.

public class ExceptionConverter : JsonConverter<Exception>
Inheritance
ExceptionConverter
Inherited Members
Extension Methods

Examples

ExceptionConverter serializes Exception instances to JSON, including optional stack trace and Data dictionary content. This example configures JsonSerializerOptions with WriteIndented = true and adds the converter with includeStackTrace: true and includeData: true, then creates a nested InvalidOperationException("Outer operation failed.") with an inner InvalidOperationException("Inner operation failed.") and a CorrelationId data entry. The resulting JSON includes top-level fields (Type, Source, Message, Stack, Data) and a nested Inner section for the inner exception with its own Type and Message. Console output displays the complete JSON structure.

using System;
using System.Text.Json;
using Cuemon.Extensions.Text.Json.Converters;

namespace MyApp.Examples;

public class ExceptionConverterExample
{
    public void Demonstrate()
    {
        var options = new JsonSerializerOptions
        {
            WriteIndented = true
        };

        // Include both stack trace and exception data
        options.Converters.Add(new ExceptionConverter(includeStackTrace: true, includeData: true));

        var inner = new InvalidOperationException("Inner operation failed.");
        var ex = new InvalidOperationException("Outer operation failed.", inner);
        ex.Data["CorrelationId"] = "abc-123";

        string json = JsonSerializer.Serialize(ex, options);
        Console.WriteLine(json);
        // {
        //   "Type": "System.InvalidOperationException",
        //   "Source": "...",
        //   "Message": "Outer operation failed.",
        //   "Stack": [ "   at ..." ],
        //   "Data": { "CorrelationId": "abc-123" },
        //   "Inner": {
        //     "Type": "System.InvalidOperationException",
        //     "Message": "Inner operation failed."
        //   }
        // }

}
}

Constructors

Name Description
ExceptionConverter(bool, bool)

Initializes a new instance of the ExceptionConverter class.

Properties

Name Description
IncludeData

Gets a value indicating whether the data of an exception is included in the converted result.

IncludeStackTrace

Gets a value indicating whether the stack of an exception is included in the converted result.

Methods

Name Description
CanConvert(Type)

Determines whether this instance can convert the specified object type.

Read(ref Utf8JsonReader, Type, JsonSerializerOptions)

Reads and converts the JSON to type Exception.

Write(Utf8JsonWriter, Exception, JsonSerializerOptions)

Writes the value as JSON.

See Also