Skip to content

Formatting of generic exceptions is mangled #1754

Closed
@0xced

Description

@0xced

Information

  • OS: any
  • Version: latest (0.49.2-preview.0.73)
  • Terminal: any

Describe the bug

Formatting of generic exceptions is does not work as expected. When using ExceptionFormats.ShortenTypes, the exception type is totally mangled.

To Reproduce

FaultException.csproj

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net8.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Spectre.Console" Version="0.49.2-preview.0.73" />
    <PackageReference Include="System.ServiceModel.Primitives" Version="8.1.1" />
  </ItemGroup>

</Project>

Program.cs

using System;
using System.ServiceModel;
using Spectre.Console;

try
{
    throw new FaultException<System.IO.DriveInfo>(null, reason: "Dummy fault reason");
}
catch (Exception exception)
{
    var format = args.Length > 0 && Enum.TryParse<ExceptionFormats>(args[0], out var result) ? result : ExceptionFormats.Default;
    AnsiConsole.WriteException(exception, format);
}

Run dotnet run -- ShortenEverything and see how the exception is formatted.

I chose FaultException<> as an example of a generic exception because it came from a real life SOAP error.

Expected behavior

The exception is printed properly, something like

FaultException<DriveInfo>: Dummy fault reason
  at void <Main>$(string[] args) in Program.cs:7

Actual behavior

The output is truncated and we can't see that the exception is a FaultException.

0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]: Dummy fault reason
  at void <Main>$(string[] args) in Program.cs:7

See also this screenshot with the colors.

Screenshot of the mangled exception

Additional context
I will submit a pull request to fix this issue soon.


Please upvote 👍 this issue if you are interested in it.

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

  • Status

    Done 🚀

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions