Laden...

Ausgabeinformationen zur Methode und Klasse

Erstellt von oehrle vor 2 Jahren Letzter Beitrag vor 2 Jahren 291 Views
O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 2 Jahren
Ausgabeinformationen zur Methode und Klasse

Hallo, eine Frage die mich immer wieder mal beschäftigt, wenn ich Fehlerinfos ausgeben in einem Try..Catch.

Gibt es da eigentlich irgendwo eine Angabe in der Exception, die ich gezielt abfragen kann in welcher Klasse und Methode, Zeile der Zwischenfall passiert ??
Bisher gebe ich immer die Methode noch genau an, um den Fehler schnell nachvollziehen zu können.

Oder gibt es da noch andere Hulfsmittel (Kennzeichnung von Methoden mit bestimmten Attributen ...) ??
Über eine Info wäre ich dankbar.

16.835 Beiträge seit 2008
vor 2 Jahren

Hört sich danach an, dass Du Dir ein eigenes Loggingsystem gebaut hast - nich so unbedingt die beste Idee 🙂

Serilog zB ist das führende Logging-Framework in .NET und verwendet unter der Haube die Standardschnittstelle von .NET.
Protokollierung in .NET

Loggst Du sauber, so wie es in .NET vorgesehen ist, dann wird anhand der Exception auch der StackTrace ausgelesen, indem alle notwendigen Informationen zur Quelle und Grund enthalten sind.
Im Endeffekt musst Du nichts zusätzlich oder manuell loggen, wenn Du die Grundlegeln vom Logging in .NET beachtest 🙂

Mit .NET 6 gibts ein neues Attribut für einen Logger Message Generator
Quellgenerierung der Kompilierzeitprotokollierung
Der senkt den Performance Impact von Log-Nachrichten enorm.

O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 2 Jahren

Hallo, danke erst mal.
Also ich will jetzt nicht gerade mit einem Schlachtschiff auffahren.
Aber in den Try...Catch - Exceptions , wenn eine Ausnahme auftritt werte ich diese aus und gebe die Infos aus, damit man nachvollziehen kann was passiert ist und wo.
Da meine Frage:

  • Kann ich der Exception irgendwo entlocken, in welcher Klassenmethode der Error passiert
  • In welcher Zeile das passiert ist

damit ich diese Infos sinnvoll als Infostring ausgeben kann??

16.835 Beiträge seit 2008
vor 2 Jahren

Warum schaust denn nicht in die Links, die man Dir extra dafür gibt? 🙂

Der Stack Trace ist genau dafür da.
Da steckt die Methode drin (als Eigenschaft des Frames).

Wenn Dir die Doc zuviel Text ist
-> Google Suche nach "c# method name of stack trace"

Und noch der Verweis auf .NET Basics:
Kompilierter Code sieht anders aus als Dein Quellcode.
Daher wird der StackTrace i.d.R. nicht exakt die Zeilennummer kennen, die Du in Deinem Quellcode hast - vor allem nicht mit der Release Configuration.

Dafür braucht die Runtime PDB Dateien, die man aber (besonders bei Desktop Anwendungen) i.d.R. nicht mit ausliefern sollte.
Angeben von Symboldateien (PDB-Dateien) und Quelldateien im Visual Studio Debugger (C#, C++, Visual Basic, F#)

Daher ist es umso wichtiger, dass Du Dich einfach an die .NET Logging Basics hälst, damit Deine Log Infos nützlich sind.
Eigene Logging-Schnipseleien erfüllen das i.d.R. nicht => Protokollierung in .NET

O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 2 Jahren
Frage beantwortet

Hallo, danke für die Info.
Ja, der StackTrace ist eigentlich genau das was ich brauche, um genau zu wissen wo es im Code kracht.
Danke der Info.