Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Ausgabeinformationen zur Methode und Klasse
oehrle
myCSharp.de - Member



Dabei seit:
Beiträge: 401
Herkunft: Germany

Themenstarter:

Ausgabeinformationen zur Methode und Klasse

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16152

beantworten | zitieren | melden

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.
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4186

beantworten | zitieren | melden

Du meinst Exception.StackTrace?
private Nachricht | Beiträge des Benutzers
oehrle
myCSharp.de - Member



Dabei seit:
Beiträge: 401
Herkunft: Germany

Themenstarter:

beantworten | zitieren | melden

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??
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16152

beantworten | zitieren | melden

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
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
oehrle
myCSharp.de - Member



Dabei seit:
Beiträge: 401
Herkunft: Germany

Themenstarter:

Frage beantwortet

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers