Laden...

Debugger springt bei Exception in WPF-Anwendung nicht zum Fehler

Erstellt von barzefutz vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.746 Views
B
barzefutz Themenstarter:in
95 Beiträge seit 2007
vor 11 Jahren
Debugger springt bei Exception in WPF-Anwendung nicht zum Fehler

Ich habe hier ein etwas seltsames Problem und bin ratlos. Ich habe eine WPF-Anwendung und in meinem Hauptfenster steht folgender Code:

    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            Class1.FehlerverursachendeMethode();
        }
    }

Wenn ich das Programm ausführe, zeigt mir VS an, dass ein Fehler aufgetreten ist. Soweit so gut, aber er springt nicht zur fehlerverursachenden Zeile in Class1, sondern sagt mir nur, dass ein Fehler in MainWindow aufgetreten ist und springt auch nicht in den Code:

B
barzefutz Themenstarter:in
95 Beiträge seit 2007
vor 11 Jahren

Wenn ich genau denselben Code in einer WinForms-Anwendung ausführe, funktioniert es wie gewünscht. Dort springt er direkt zu der Zeile, die den Fehler verursacht hat. Wie kann ich das in der WPF-Anwendung erreichen?

C
258 Beiträge seit 2011
vor 11 Jahren

Deine erste Exception kommt nicht von der Fehlerverursachenden Methode sondern dein Xaml des Mainwindows ist fehlerhaft...

B
barzefutz Themenstarter:in
95 Beiträge seit 2007
vor 11 Jahren

Nein, das stimmt nicht. Das XAML ist korrekt. Wenn ich in der Fehlermeldung auf Details klicke, kann ich an der InnerException auch sehen, dass der Fehler von meiner Fehlermethode kommt, also alles in Ordnung. Das Problem ist eben nur, dass er nicht in die Methode springt, sondern mir diese nichtssagende XamlParseException präsentiert, die völlig irreführend ist.

C
258 Beiträge seit 2011
vor 11 Jahren

Ich denke das liegt daran das der Konstruktor deiner Klasse über den Xaml Parser aufgerufen wird. Dieser enthält einen catch block und wirft dann eine neue Exception mit deiner Exception als InnerException deswegen ist die Quelle nicht verfügbar.

EDIT: Ist aber ungewöhnlich Code in dem Window Konstruktor zu packen.
bzw auch Exceptions bei Parameterlosen Konstruktoren finde ich nicht sinnvoll (MMN)

Z
403 Beiträge seit 2007
vor 11 Jahren

Hallo barzefutz,

ich stimme Console32 zu und rate dir (u.a. auch) deshalb mal das MVVM Pattern anzuschauen, wenn noch nicht getan.

André

B
barzefutz Themenstarter:in
95 Beiträge seit 2007
vor 11 Jahren

Danke für den Tipp. Gehe ich recht in der Annahme, dass dieses MVVM der "bevorzugte" Weg ist, WPF-Anwendungen zu entwickeln? Habe mich mal ein wenig eingelesen, das kannte ich bisher noch nicht, nur mit MVC habe ich in Verbindung mit ASP schon gearbeitet. Mir stellt sich allerdings noch die Frage, inwieweit das das Problem mit dem Debugging löst. Wird es dadurch gelöst, dass in der View praktisch keine Exceptions mehr auftreten können wegen der Codetrennung? Und ich würde gern noch wissen ob das mit dem Debugging unter WPF normal ist oder ob ich da irgendendwas falsch konfiguriert habe.

Z
403 Beiträge seit 2007
vor 11 Jahren

Hallo barzefutz,

wie Console32 bereits erklärt hat, stammt das Verhalten vom XAML Parser der den Konstruktor aufruft.

Das ist so gewollt.

In der View können auch mit MVVM (XamlParser-) Exceptions auftreten, jedoch stammen diese dann im idealfall nicht mehr von der Logik sondern von der View selbst.

André