Наш код везде ловит общее исключение.
Обычно он записывает ошибку в таблицу журнала в базе данных и показывает MessageBox пользователю, чтобы сказать, что запрошенная операция завершилась неудачно. Если есть взаимодействие с базой данных, транзакция откатывается.
Я ввел уровень бизнес-логики и уровень доступа к данным, чтобы раскрыть часть логики. На уровне доступа к данным я решил ничего не перехватывать, и я также выбрасываю ArgumentNullExceptions и ArgumentOutOfRangeExceptions, чтобы сообщение, переданное по стеку, не поступало прямо из базы данных.
В слое бизнес-логики я поставил попытку. В подвохе я откатываю транзакцию, делаю
заготовка и переброска.
В слое презентации есть еще одна попытка перехвата, которая отображает MessageBox.
Теперь я думаю о перехвате DataException и ArgumentException вместо Exception, когда я знаю, что код обращается только к базе данных.
Когда код обращается к веб-службе, я думал, что создам свое собственное «WebServiceException», которое будет создаваться на уровне доступа к данным всякий раз, когда генерируется HttpException, WebException или SoapException.
Так что теперь, как правило, я буду ловить 2 или 3 исключения, в то время как в настоящее время я ловлю только общее исключение, и я думаю, что мне это кажется нормальным. Кто-нибудь еще раз переносит исключения, чтобы перенести сообщение на уровень представления?
Я думаю, что мне, вероятно, следует добавить функцию try catch в Main (), которая перехватывает Exception, пытается зарегистрировать его, отображает сообщение «Приложение обнаружило ошибку» и выходит из приложения.
Итак, мой вопрос: кто-нибудь видит дыры в моем плане? Существуют ли какие-либо очевидные исключения, которые я должен отлавливать, или они в значительной степени покрывают это (кроме доступа к файлу - я думаю, что есть только 1 место, где мы можем читать и писать в файл конфигурации).