Visual Studio ignoruje obsługę wyjątków

0

Mam taki kod:

  File.WriteAllText("YourXaml.xaml", txtXamlData.Text);
            Window myWindow = null;

           
                Stream sr = File.Open("YourXaml.xaml", FileMode.Open);

                try
                {
                    myWindow = (Window)XamlReader.Load(sr);

                   
                    myWindow.ShowDialog();
                    myWindow.Close();
                    myWindow = null;
                }catch(XamlParseException ex)
                {
                    MessageBox.Show(ex.Message);
                }

Teoretycznie, jeśli nie uda się sparsować pliku .xaml to powinno się wyświetlić okienko dialogowe z błędem. Jednak tak się nie dzieje.. wyjątek pokazuje się po prostu w Visual Studio tak jakby był nie obsłużony. Co zrobiłem źle?

0

Bo może wyskakuje coś innego niż XamlParseException?

0

@Azarien
Nie :/

0

Po przyjrzeniu się twojemu kodowi już chyba widzę co się dzieje.

myWindow = (Window)XamlReader.Load(sr);

Wyjątki, które wydarzą się w zdarzeniu na otwarcie okna nie są propagowane na zewnątrz, czyli twój try nie może go złapać.
Zależnie od wersji Windowsa wyjątek albo zniknie całkowicie, albo wyskoczy nieobsłużony.

Dotyczy to tylko 64-bitowych wersji Windowsa - niezależnie od bitowości twojego programu.

Przetestuj program pod 32-bitowym systemem, i zobaczysz że wyjątek jest.

Jest to ograniczenie 64-bitowych Windowsów. Przyczyna jest skomplikowana. Nic na to nie poradzisz, to samo się dzieje w każdym innym API, czy to Windows Forms, MFC, czy pod WinAPI.

0

@Azarien
dzięki:) a gdzie moge o tym poczytac wiecej? :) skądś to wiesz... :P

1 użytkowników online, w tym zalogowanych: 0, gości: 1