• Home
  • /Exception Reporter for .NET

Exception Reporter for .NET

First Aid for .NET Programmers                  Sample        Support        Download from Nuget Buy Now Small

The ultimate exception reports for .NET

Audit trace of user inputs leading up to the exception.
Nested exceptions with error details and call-stacks.
Detailed system and application specifications.

Exception Reporter is a single, self-contained 150KB .NET DLL which can be referenced by any .NET desktop application. It is compiled for ‘Any CPU’ against the .NET 4 Client Profile and has been tested against all later versions.

Designed to work with either WinForms or WPF desktop applications written in any .NET language, including C# and VB.

The report includes recreation steps for the bug, a full stack trace of the exception, a CPU/Memory performance graph, details of the application being used, and a summary of the operating system and hardware.

The generated report is a standards compliant and self-contained HTML document which averages about 200KB in size.

Exception Reporter .Net Sample Report

The report can be handled like any other file and easily emailed or uploaded to any defect management software.

It can be viewed on any device with a standard web browser such as Chrome, Firefox, Edge, Opera, Safari or Internet Explorer. View a Sample report.

A single call is required to start logging user actions and another call is required to start performance logging. These calls would typically be done in the Main() function that runs when your application is started. Optionally they could be called after your application enters a diagnostics mode if these feature are not required for normal operation.

All unhandled exceptions can then be handled with a single line of code.

static void Main()


      // Start recording all user input actions

      // Start capturing performance data

      // Capture all unhandled exceptions
Application.ThreadException += UiThreadException;

Application.Run(new FormTest());


static void UiThreadException(object sender, ThreadExceptionEventArgs e)

ER.Report.ShowException(null, e.Exception, null);


Alternatively, individual exceptions can be handled in a normal try-catch block.

private void ExampleFunction(string message)


PerformFunction(message, 0);

catch (Exception ex)

ER.Report.ShowException(this, ex);



The above examples use the built-in form for generating and displaying the exception report. Alternatively, this can be handled in a custom way allowing it to be saved directly to your defect management system.

var report = ER.Report.GetErrorReport(e.Exception);
File.WriteAllText(@“C:\Reports\MyException.htm”, report.Html);

Application specific parameters can be embedded within the report by passing them into any of the functions that create a report.

Dictionary<string, string> appParameters = new Dictionary<string, string>();
appParameters.Add(“Database Server”, “(LocalHost)”);
appParameters.Add(“Database User”, “sa”);
appParameters.Add(“Current File”, @“C:\Documents\MyFile.txt”);

ER.Report.ShowException(this, ex, appParameters);