Laden...

Console-Fenster soll bei Fehlermeldung stehen bleiben.

Erstellt von EyckBlank vor einem Jahr Letzter Beitrag vor einem Jahr 273 Views
E
EyckBlank Themenstarter:in
24 Beiträge seit 2022
vor einem Jahr
Console-Fenster soll bei Fehlermeldung stehen bleiben.

Hallo!
Ich weiss, diese Frage ist bestimmt schon 1000 mal gestellt worden.
Aber bei der Fragestellung wurde es nie auf den Punkt gebracht.

Ich mache in C# eine Datenbankabfrage, die mitunter sehr lange dauert.
Die Treffer werden zur Ansicht auf einem Console-Fenster angezeigt.

Hin und wieder gibt es eine Fehlermeldung, die ebenfalls kurz auf dem Console-Fenster erscheint
Nur wird dann das C# Programm daraufhin unmittelbar geschlossen.

Dabei schließt auch unmittelbar das Console-Fenster,
so dass ich keine Zeit habe, die Fehlermeldung lesen zu können.
Das muss ich aber, um das Programm korrigieren zu können!

In einigen Fällen gelang es mir mit einem Handy-Video, aber nicht immer.

Gibt es irgend einen Trick, um an die Fehlermeldungen zu kommen ?
Console.ReadKey() greift hierbei nicht.

Vielen Dank und herzliche Grüße aus Norddeutschland!
Eyck Blank

P
441 Beiträge seit 2014
vor einem Jahr

Du könntest die Fehlermeldung Loggen, z.B. in eine Datei. Am besten mithilfe eines ordentlichen Logging und Exception Handling Konzeptes.

Wie startest du denn die Anwendung? Per Doppelklick?
Wenn du sie aus einer Console startest, siehst du auch alle ausgaben.

E
EyckBlank Themenstarter:in
24 Beiträge seit 2022
vor einem Jahr

Danke!
Ich starte die Anwendung aus dem FileExplorer mit Doppelklick.
VD + HG
EB

E
EyckBlank Themenstarter:in
24 Beiträge seit 2022
vor einem Jahr

Da ich ein C# Anfänger bin,
wie mache ich ein Fehler-Logging ?

Geht etwas mit dem MessageBox-Fenster ?

VD EB

16.807 Beiträge seit 2008
vor einem Jahr

Geht etwas mit dem MessageBox-Fenster ?

Nicht in einer Konsole-Anwendung. Deswegen ist es eine Konsolenanwendung.

Hin und wieder gibt es eine Fehlermeldung, die ebenfalls kurz auf dem Console-Fenster erscheint
Nur wird dann das C# Programm daraufhin unmittelbar geschlossen.

Das liegt an der Art und Weise, wie Konsolenapplikationen funktionieren.

Wenn eine Exception in der Konsole erscheint, dann meinst Du offenbar eine unbehandelte Ausnahme aka eine Exception, die Du nicht abfängst.
Das Resultat ist, dass die Applikation abstürzt und sich der Prozess beendet.

Damit schließt Windows automatisch das Fenster.

2 Varianten:

  • Du loggst, zB in Dateien oder den Windows Log. Schau in die Docs, wenn das neu für Dich ist => Protokollierung - .NET
  • Du machst ein Try-Catch um die gesamte Anwendung (in der Main Methode), sodass Du die Exception abfängst (damit stürzt die Anwendung auch nicht mehr ab, und Du kannst drauf reagieren), ausgibst und mit Console.ReadKey()) das automatische Schließen verhinderst.

Mehr dazu in den Basics
Exceptions and Exception Handling

E
EyckBlank Themenstarter:in
24 Beiträge seit 2022
vor einem Jahr

Danke Abt!
Es wäre schön zu wissen, welcher Fehler und wo dieser auftritt.

Mehr dazu in den Basics
Exceptions and Exception Handling

Ich nehme an, dass es irgend welche fehlerhaften Einträge in der Datenbank gibt.
So war es in den Fällen, die ich klären konnte.

  • Du machst ein Try-Catch um die gesamte Anwendung (in der Main Methode), sodass Du die Exception abfängst (damit stürzt die Anwendung auch nicht mehr ab, und Du kannst drauf reagieren), ausgibst und mit Console.ReadKey()) das automatische Schließen verhinderst.

Obenstehendes habe ich auch probiert, hat aber das Programm nicht am Schließen gehindert.

VD + HG
EB

16.807 Beiträge seit 2008
vor einem Jahr

Dann solltest Du an den notwendigen Stellen vorher Exceptions abfangen und verarbeiten, dann kannst es genau lokalisieren.
Ein allgemeines Exception Handling um die gesamte Anwendung ist nur der aller letzter Punkt, wo ein Absturz der Anwendung verhindert werden kann.

Siehe: Behandeln und Auslösen von Ausnahmen in .NET

Was der Grund einer Exception ist, steht immer im Stack Trace, sofern man ihn nicht selbst verfälscht.

Obenstehendes habe ich auch probiert, hat aber das Programm nicht am Schließen gehindert.

Dann hast Du es falsch gemacht.
Hab Dir deswegen den Link gegeben, weil da 1:1 ein Beispiel drin steht.

E
EyckBlank Themenstarter:in
24 Beiträge seit 2022
vor einem Jahr

Danke Abt!
Werde nun eine Weile brauchen, dieses auszuprobieren.

VD + HG
EB