Обработка исключений для приложения WPF - PullRequest
3 голосов
/ 12 июня 2011

У меня есть основное приложение WPF, настроенное следующим образом: Представления, ViewModels, бизнес-объекты и Dals с базой данных SQL Compact. Звонки в базу данных осуществляются через Linq2Sql. Приложение однопользовательское. (один дБ на пользователя).

Предполагается, что исключение происходит в Dal во время операции CRUD, или пользователь удалил базу данных, где должна происходить обработка исключения.

Также, если по какой-либо причине в View / ViewModel возникает исключение, я не хочу, чтобы система зависала. Как я должен справиться с этим. Должен ли я просто сообщить пользователю, что произошла ошибка, и заново создать View / ViewModel, чтобы пользователь мог продолжить. ViewModels общаются с другими ViewModels только через Messengering (например, что-то нужно обновить).

Ответы [ 3 ]

2 голосов
/ 12 июня 2011

Самый простой ответ - это действительно зависит от требований приложений.

Детали: Прежде всего, вы должны выполнять исключительную обработку, когда есть вероятность исключительного случая.При выполнении операции CRUD, при выполнении чего-либо в модели представления или даже при создании представлений.Пользователю определенно не понравится приложение, аварийно завершающее работу.Поэтому лучше всего обработать исключение, настроить сообщение об ошибке так, чтобы оно могло иметь смысл для пользователя, и показать его пользователю, чтобы он / она знал, что произошла ошибка.Также спросите пользователя, что делать сейчас (это опять-таки зависит от требований приложения), но, например, если файл базы данных был удален, спросите пользователя, хочет ли он создать новый файл или что-то подобное

2 голосов
/ 12 июня 2011

Проблемы с БД должны обрабатываться в вашем dal, dal должен сообщать кому-либо о проблеме с сообщениями / событиями.

исключения из моделей представления / просмотра должны быть пойманы внутри этого класса, если у вас нет какой-либо инфраструктуры mvvm, такой как caliburn, которые могут справиться с этим независимо.После перехвата исключения в диспетчер оболочки / представления должно быть отправлено сообщение, которое решит проблемы.

2 голосов
/ 12 июня 2011

В методе OnStartup () вашего приложения WPF вы можете подписаться на событие Application.Current.DispatcherUnhandledException , которое позволяет записывать исключение, информировать пользователя оисключение и предложите какие-либо меры в случае необходимости, а также отмените прекращение заявки, установив e.Handled = true .

Отменить закрытие приложения можно только в том случае, если вы можете устранить причину.исключения, иначе вы можете оставить приложение в неопределенном состоянии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...