Я новичок в WPF, я использую VS2010 beta2, .NET 4.0.Исключения проглатываются в моем приложении WPF. Как заставить приложение рухнуть?
Throw new Exception("test")
в моем коде просто проглатывает исключение и приложение не падает.
Это не то, что я ожидаю, я хочу, чтобы приложение вышло из строя, если произошло необработанное исключение.
Есть ли простой способ достичь этого?
Также не выполнено ни Application.DispatcherUnhandledException
, ни AppDomain.UnhandledException
. Вероятно, потому, что весь код выполняется как часть привязки данных (я использую шаблон MVVM, а исключение выбрано в конструкторе ViewModel).
В процессе отладки я могу посмотреть окно вывода и выяснить, что не так. Но мне кажется странным, что приложение просто игнорирует ошибку, оставляет пользовательский интерфейс в неправильном состоянии и не падает.
Edit:
Кажется, что может быть только некритические обязательные исключения должны произойти во время привязки данных. Возможно, решение проблемы, связанное с привязкой (например, подключение к базе данных) напрямую из исполнения привязки, может быть решением. Однако я не уверен, как добиться этого в MVVM.
Упрощенный пример:
XAML:
<DataTemplate DataType="{x:Type vm:ItemViewModel}">
<vw:ItemControl />
</DataTemplate>
<ContentControl
Content="{Binding Path=MyItem}"
/>
где MyItem
создает и возвращает экземпляр ItemViewModel
. Проблема в том, что конструктор ItemViewModel
выполняется как часть привязки данных, и я не уверен, что это хорошая практика (этот конструктор содержит код, который может быть неудачным - например, если база данных недоступна).
Похожего вопрос: http://stackoverflow.com/questions/1542622/handle-exceptions-with-wpf-and-mvvm но нет ответа :-( –