Zum Fußzeileninhalt springen
Iron Academy Logo
C#-Anwendung
C#-Anwendung

Andere Kategorien

Formatierung der Ausnahmeanzeige - Spectre Console Series

Tim Corey
8m 51s

Beim Erstellen einer .NET-Konsolenanwendung müssen Sie Ausnahmen oft so behandeln, dass sie sowohl für Entwickler als auch für Benutzer sinnvoll sind. Einfache Konsolenausgaben können Ausnahmen wie lange, unleserliche Datenstränge aussehen lassen - besonders wenn es um Stack Traces und reflexionslastige Bibliotheken geht. In seinem Video "Formatierung der Ausnahmeanzeige - Spectre Console Series" zeigt uns Tim Corey, wie man die Spectre.Console-Bibliothek verwendet, um Ausnahmen einfacher zu lesen, zu analysieren und zu verstehen.

In diesem Artikel erfahren Sie, wie Tim Ausnahmen behandelt, Befehle und Methoden aus Spectre.Console verwendet und verschiedene Einstellungen und Stile für die Anzeige von Ausnahmen anwendet.

Einführung: Warum Formatausnahmen?

Zu Beginn des Videos stellt Tim Corey Spectre.Console vor und beschreibt es als eine Bibliothek, die Entwicklern hilft, ihre einfachen Konsolenanwendungen in "optisch ansprechende, informative Anwendungen" zu verwandeln In dieser Lektion konzentriert er sich darauf, wie man Ausnahmen so behandelt, dass sie klarer und besser lesbar angezeigt werden.

Tim erklärt, dass standardmäßig, wenn eine Ausnahme in einer Konsolenanwendung ausgelöst wird, die Ausgabe von Console.WriteLine(ex) nur eine Wand aus Text ist. Sie enthält Pfade, Stack Traces und Typennamen - alles in Form einer fortlaufenden Zeichenkette. Sie ist funktional, aber nicht freundlich.

Um dies zu demonstrieren, erstellt Tim ein kleines Beispiel:

try
{
    throw new Exception("You forgot to give me the data.");
}
catch (Exception ex)
{
    Console.WriteLine(ex);
}
try
{
    throw new Exception("You forgot to give me the data.");
}
catch (Exception ex)
{
    Console.WriteLine(ex);
}

Er führt diesen Befehl im Terminal aus, und wie erwartet ist die Ausgabe unübersichtlich. Alles fügt sich zusammen. Tim merkt an, dass es schwierig ist, herauszufinden, worauf es ankommt - auf die Nachricht, die Methode oder den Speicherort der Datei. Also macht er sich auf den Weg, um dies mithilfe der Formatierung von Spectre.Console-Ausnahmen zu beheben.

Verwendung von AnsiConsole.WriteException - Der erste Schritt

Um die Anzeige zu verbessern, ersetzt Tim die Zeile:

Console.WriteLine(ex);
Console.WriteLine(ex);

mit einem Spectre-Befehl:

AnsiConsole.WriteException(ex);
AnsiConsole.WriteException(ex);

Dieser eine Methodenaufruf ändert alles.

Wenn er die Anwendung erneut ausführt, ist die Ausgabe im Terminal nun eingefärbt. Die Nachricht erscheint klar und deutlich, und die Stack-Trace-Abschnitte sind anders gestaltet. Der Text ist leichter zu parsen, und die wichtigsten Werte werden hervorgehoben.

Tim weist darauf hin, dass die Klasse AnsiConsole als zentraler Zugriffspunkt in Spectre.Console für die Darstellung von gestylten Ausgaben dient. Die WriteException()-Methode wurde speziell dafür entwickelt, Ausnahmen zu behandeln und sie automatisch zu formatieren.

Er sagt: "Das ist schon ein Fortschritt." Die Konsole hebt nun die Meldung, den Dateipfad und den Methodennamen hervor, so dass sie auf einen Blick leichter zu lesen ist.

Hinzufügen von Formatierungsoptionen mit ExceptionFormats

Nachdem er das grundlegende Beispiel gezeigt hat, geht Tim noch einen Schritt weiter, indem er Formatierungsparameter hinzufügt, um zu steuern, welche Teile der Ausnahme angezeigt und wie sie verkürzt werden.

Er stellt die Aufzählung ExceptionFormats vor, die verschiedene Optionen wie ShortenPaths, ShortenTypes, ShortenMethods und ShowLinks bietet. Sie können sie einzeln verwenden oder mit der Pipe (|) Zeichen.

Tim schreibt den folgenden Code:

AnsiConsole.WriteException(ex, ExceptionFormats.ShortenEverything);
AnsiConsole.WriteException(ex, ExceptionFormats.ShortenEverything);

Wenn er diesen Befehl ausführt, wird die Konsolenausgabe kürzer und prägnanter.

Das erklärt er:

  • Pfade werden verkürzt - statt des vollständigen Verzeichnispfads wird nur der Dateiname wie Program.cs angezeigt.

  • Typen werden verkürzt - statt System.IO.InvalidDataException heißt es einfach InvalidDataException.

  • Methoden werden gekürzt - lange generische Methodennamen werden aus Gründen der Klarheit gekürzt.

Dieses Beispiel zeigt, wie die Ausnahmeformatierungsoptionen von Spectre.Console das Ergebnis kompakter machen, ohne dass wesentliche Informationen verloren gehen.

Tim betont, dass die erste Version (vollständiger Pfad und Namespaces) "größtenteils Rauschen" enthält, während diese formatierte Version besser geeignet ist, wenn man nur schnell die Ursache des Problems erkennen möchte.

Kombinieren mehrerer Formate für mehr Kontrolle

Tim hört damit nicht auf. Er demonstriert, wie Sie mit dem Pipe-Operator mehrere Formatierungseinstellungen kombinieren können:

AnsiConsole.WriteException(ex, ExceptionFormats.ShortenEverything | ExceptionFormats.ShowLinks);
AnsiConsole.WriteException(ex, ExceptionFormats.ShortenEverything | ExceptionFormats.ShowLinks);

Bei 3:54 erklärt Tim die Option ShowLinks. Dadurch kann Spectre.Console anklickbare oder mit dem Mauszeiger verschiebbare Dateilinks in kompatiblen Terminals darstellen. In seinem Beispiel erscheint der Dateiname Program.cs nun unterstrichen. Wenn er mit dem Mauszeiger darüber fährt, zeigt das Terminal einen Tooltip mit dem vollständigen Dateipfad an.

Er merkt an, dass dieses Verhalten von Ihrer Umgebung abhängt - es funktioniert besser in Terminals, die klickbare Links unterstützen (wie einige Bash- oder VS-Code-Terminals).

Durch die Kombination von Formaten können Sie genau entscheiden, wie viele Informationen Ihre Ausnahmeausgabe anzeigen soll - vielleicht möchten Sie verkürzte Pfade, aber vollständige Typnamen, oder Sie möchten die Methodendetails ganz ausblenden. Spectre.Console bietet Ihnen diese Flexibilität.

Mit ExceptionSettings in die Tiefe gehen

An dieser Stelle stellt Tim ein neues Objekt namens ExceptionSettings vor. So können Sie sowohl die Formatierung als auch das Styling von Ausnahmen auf eine fortschrittlichere Art und Weise gemeinsam anpassen.

Er erklärt, dass Sie anstelle eines einzelnen Formatwertes ein ganzes Einstellungsobjekt übergeben können:

var settings = new ExceptionSettings
{
    Format = ExceptionFormats.ShortenEverything,
    Style = new ExceptionStyle
    {
        Message = new Style(foreground: Color.Red, decoration: Decoration.SlowBlink)
    }
};
AnsiConsole.WriteException(ex, settings);
var settings = new ExceptionSettings
{
    Format = ExceptionFormats.ShortenEverything,
    Style = new ExceptionStyle
    {
        Message = new Style(foreground: Color.Red, decoration: Decoration.SlowBlink)
    }
};
AnsiConsole.WriteException(ex, settings);

Hier konfiguriert Tim zwei Eigenschaften:

  • Format - gibt an, wie die Ausnahmeinformationen gekürzt werden sollen.

  • Stil - legt fest, wie verschiedene Ausnahmeelemente (wie Methodennamen, Pfade oder Meldungen) aussehen sollen.

Spectre.Console bietet eine Vielzahl von Styling-Optionen wie Vordergrundfarben, Hintergrundfarben und Dekorationen (wie Unterstreichen, Blinken, Fettdruck usw.).

Tim weist darauf hin, dass Sie auch andere Teile der Ausnahmeanzeige gestalten können, z. B. Parameternamen, Methodenaufrufe oder Klammern - nicht nur die Meldung. Dies ermöglicht eine sehr feine Kontrolle darüber, wie Ihre Ausnahmeausgabe in der CLI aussieht.

Styling der Ausnahmemeldung

Um zu zeigen, wie das Styling in der Praxis funktioniert, wendet Tim einen Stil speziell auf den Nachrichtenteil der Ausnahme an. Er setzt die Farbe der Nachricht auf Rot und fügt einen langsamen Blinkeffekt hinzu, um sie noch mehr hervorzuheben:

Message = new Style(foreground: Color.Red, decoration: Decoration.SlowBlink)
Message = new Style(foreground: Color.Red, decoration: Decoration.SlowBlink)

Wenn er die Anwendung ausführt, blinkt die Meldung "Hey, du hast vergessen, mir die Daten zu geben" jetzt rot im Terminalfenster.

Tim weist darauf hin, dass dies dazu beiträgt, die wichtigste Information in der Ausnahmeausgabe hervorzuheben - die Nachricht selbst. Der Rest des Textes (z. B. Dateiname und Zeilennummer) ist weiter unten verfügbar, aber man sieht sofort, was falsch gelaufen ist.

Er erklärt: "Das lenkt den Blick auf das Wesentliche, nämlich die eigentliche Botschaft. Und dann können sie herausfinden, oh, es ist in main auf Program.cs in Zeile 256"

Dies zeigt, wie Spectre.Console nicht nur Daten lesbar macht, sondern auch Betonung und visuelle Hierarchie hinzufügt, damit Sie Ergebnisse schneller interpretieren können.

Abschluss der Spectre-Konsolen-Serie

Am Ende des Videos weist Tim darauf hin, dass dies der letzte Teil seiner Spectre.Console-Reihe war - zumindest vorläufig. Er fordert die Zuschauer auf, unter suggestions.iamtimcorey.com Feedback oder Vorschläge für weitere Themen zu hinterlassen.

Er merkt an, dass im Laufe der Serie eine Reihe von Spectre-Funktionen behandelt wurden: Rendering von Tabellen, Umgang mit CLI-Befehlen und Argumenten, Arbeit mit strukturiertem Text und jetzt auch die Formatierung von Ausnahmen.

Abschließend erklärt Tim, dass diese Lektion Entwicklern die Werkzeuge an die Hand gibt, um Ausnahmen elegant, klar und mit visuellem Feedback zu behandeln - und das alles innerhalb einer einfachen .NET-Konsolenanwendung.

Abschließende Gedanken

In dieser Anleitung zeigt Tim Corey anschaulich, wie man Spectre.Console-Ausnahmen lesbarer, informativer und visuell ansprechender gestalten kann. Mit nur ein paar Zeilen Code können Entwickler:

  • Effizienter Umgang mit Ausnahmen.

  • Formatieren Sie die Konsolenausgabe mit verkürzten Pfaden und sauberem Text.

  • Verwenden Sie ExceptionSettings-Objekte zur Feinabstimmung von Format und Stil.

  • Fügen Sie Farbe und Dekoration hinzu, um wichtige Informationen hervorzuheben.

  • Anzeige von Dateipfaden als klickbare oder schwebende Links.

Dieser Ansatz verbessert nicht nur die Fehlersuche, sondern lässt CLI-basierte Anwendungen auch ausgefeilt und professionell aussehen. Durch die Kombination leistungsfähiger Methoden wie AnsiConsole.WriteException(), anpassbarer Einstellungen und umfangreicher Styling-Optionen können Entwickler .NET-Konsolenanwendungen erstellen, die aussagekräftige, gut strukturierte Ausnahmeausgaben liefern, die leicht zu analysieren und zu verstehen sind - genau so, wie Tim Corey es in seinem hervorragenden Beispiel zeigt.

Hero Worlddot related to Formatierung der Ausnahmeanzeige - Spectre Console Series
Hero Affiliate related to Formatierung der Ausnahmeanzeige - Spectre Console Series

Verdienen Sie mehr, indem Sie teilen, was Sie lieben

Erstellen Sie Inhalte für Entwickler, die mit .NET, C#, Java, Python oder Node.js arbeiten? Verwandeln Sie Ihr Fachwissen in ein zusätzliches Einkommen!

Iron Support Team

Wir sind 24 Stunden am Tag, 5 Tage die Woche online.
Chat
E-Mail
Rufen Sie mich an