Benutzer mit den meisten Antworten
Fehler richtig abfangen

Frage
-
Hallo zusammen,
wie kann man neben einer globalen Fehlerbehandlung noch mit
"Try - Catch" arbeiten?
Ich möchte gern globale Fehler, wie die
- AppDomain.CurrentDomain.UnhandledException
global behandeln, aber einfache Fehler, wie die
- System.IO.DirectoryNotFoundException
mit Try - Catch abfangen.
Leider läuft die AppDomain.CurrentDomain.UnhandledException immer in den
Try-Catch-Block und lässt sich dort nicht vernünftig behandeln.
Dirk
- Bearbeitet Dirk2006 Samstag, 20. Januar 2018 15:53
Antworten
-
Hi Dirk,
Dein Probleme habe ich nicht verstanden. Du kannst Doch im zweiten Thread alle Fehlerereignisse abfangen, z.B. so:Imports System.Threading Module Module19 <STAThread> Sub Main() Try AddHandler AppDomain.CurrentDomain.UnhandledException, Sub(sender As Object, e As UnhandledExceptionEventArgs) Console.WriteLine(e.ToString) End Sub Dim c As New Demo c.Execute() 'Thread.Sleep(1000) Catch ex As Exception Console.WriteLine(ex.ToString) End Try Console.WriteLine("weiter mit Taste") Console.ReadKey() End Sub Friend Class Demo Friend Sub Execute() Try Call (New Thread(New ParameterizedThreadStart(Sub(obj As Object) Try Throw New Exception("from Thread") Catch ex As Exception Console.WriteLine(ex.ToString) End Try End Sub))).Start() Catch ex As Exception Console.WriteLine(ex.ToString) End Try Throw New Exception("from Main-Thread") End Sub End Class End Module
--
Viele Grüsse
Peter Fleischer (ehem. MVP)
Meine Homepage mit Tipps und Tricks- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Donnerstag, 25. Januar 2018 06:31
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 2. Februar 2018 14:18
Alle Antworten
-
Hi Dirk,
dein Problem kann ich nicht reproduzieren. Der Try-Block um den Zugriff auf das Verzeichnis verzweigt beim Versuch, ein nicht vorhandenes Verzeichnung zu nutzen, in den Catch-Block. Wenn dort kein Throw ausgeführt wird, wird auch UnhandledException nicht aufgerufen.Was verstehst Du unter "...nicht vernünftig behandeln"?
--
Viele Grüsse
Peter Fleischer (ehem. MVP)
Meine Homepage mit Tipps und Tricks -
Hallo Peter,
vielleicht habe ich mich nicht glücklich ausgedrückt.
Ich möchte gern eine WPF-Anwendung erstellen.
Die Anwendung läuft in einem "Thread":
Public Shared Sub Main() => System.STAThreadAttribute().........
Wenn ich in der Anwendung einen zweiten "Thread" starte,
und in diesem zweiten "Thread" einen Fehler generiere, lässt sich der generierte Fehler
nicht vernünftig mittels Try - Catch abfangen (Nur mittels Catch ex As Exception).
Global könnte ich mittels eines Handlers - AppDomain.CurrentDomain.UnhandledException eine
Zuordnung vornehmen und entsprechend reagieren.
Deshalb würde ich gern neben Catch-Anweisungen auch mit einer globalen
Fehlerbehandlung arbeiten.
Ist das Blödsinn??
Dirk
-
Hi Dirk,
Dein Probleme habe ich nicht verstanden. Du kannst Doch im zweiten Thread alle Fehlerereignisse abfangen, z.B. so:Imports System.Threading Module Module19 <STAThread> Sub Main() Try AddHandler AppDomain.CurrentDomain.UnhandledException, Sub(sender As Object, e As UnhandledExceptionEventArgs) Console.WriteLine(e.ToString) End Sub Dim c As New Demo c.Execute() 'Thread.Sleep(1000) Catch ex As Exception Console.WriteLine(ex.ToString) End Try Console.WriteLine("weiter mit Taste") Console.ReadKey() End Sub Friend Class Demo Friend Sub Execute() Try Call (New Thread(New ParameterizedThreadStart(Sub(obj As Object) Try Throw New Exception("from Thread") Catch ex As Exception Console.WriteLine(ex.ToString) End Try End Sub))).Start() Catch ex As Exception Console.WriteLine(ex.ToString) End Try Throw New Exception("from Main-Thread") End Sub End Class End Module
--
Viele Grüsse
Peter Fleischer (ehem. MVP)
Meine Homepage mit Tipps und Tricks- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Donnerstag, 25. Januar 2018 06:31
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 2. Februar 2018 14:18