Try-Catch неизвестного поведения - PullRequest
2 голосов
/ 19 августа 2011

В настоящее время я изучаю после книги о том, как преобразовать код xaml в объекты во время выполнения.

У меня есть следующий код:

try
{
    ctrl = XamlReader.Load(xaml) as UserControl;
}
catch (Exception exc)
{
    OnXamlResult(new XamlCruncherEventArgs(exc.Message)); return;
}

Код не мой, явзял из книги.

Проблема в том, что try-catch не работает должным образом, или, по крайней мере, как я знаю до сих пор.Во время отладки программа останавливается, когда достигает строки:

ctrl = XamlReader.Load(xaml) as UserControl;

без перехвата исключения.

Что я делаю неправильно или как я могу решить эту проблему?

«xaml» - это строка.Он взят из текстового поля, и если пользователь правильно набрал xaml, программа должна преобразовать код xaml в объект, в противном случае должна отображаться соответствующая ошибка.

О том, как программа реагирует, могу сказать, что отладкаостанавливается (он возвращает меня в визуальную студию, указывающую на ошибку), и он не ведет себя как вход в бесконечный цикл.

1 Ответ

3 голосов
/ 19 августа 2011

Вероятно, это ошибка отладчика при возникновении исключения.Вставьте точку останова в защелку и нажмите F5, чтобы продолжить, она должна продолжиться и поразить вашу точку останова.

И, говоря «ломая», я не имею в виду, что она дает сбой, я имею в виду, что она останавливает выполнение приложенияоскорбительная строка исключения, так что в данном случае это хорошо.

Если вы используете Visual Studio, вы можете включить / отключить это поведение «разбить при исключении»:

  • Отладка -> Исключения ... (Ctrl + Alt + E)
  • Исключения общего времени выполнения, при необходимости установите флажки справа.

Что касается самого исключения, если толькоон специально предназначен для показа исключений, вероятно, возникают проблемы при загрузке предоставленной строки XAML.

...