Обработка непредвиденных исключений только базовым уровнем
Исключения из вашего уровня данных (в данном случае Entity Framework) должны обрабатываться только бизнес-уровнем.Бизнес-уровень может затем вызвать (при необходимости) более высокоуровневое исключение для вашего уровня представления (UI).
Не выбрасывайте и не перехватывайте исключения более чем на одном уровне вашего приложения.Это считается плохой практикой.Уровень представления должен обрабатывать только исключения бизнес-уровня.
Никогда не глотайте исключения, используя:
try {} catch (Exception) { // who cares }
Поймайте ожидаемые исключения как можно раньше
Всегда старайтесь обрабатывать ожидаемые исключения (например, FileNotFoundException
) как можно скорее.Если вы можете справиться с этим, обращайтесь с этим прямо там.Если нет, то перебросьте Пользовательское исключение и обработайте его в нижележащем слое.
Не очищайте трассировку стека при повторном генерировании исключения
Поймать и перебросить неявно (см.)
try {} catch (Exception) { throw; }
и не явно
try {} catch (Exception ex) { throw ex; }