В последнее время я нашел несколько аргументов с моим начальником об обработке исключений в нашем веб-приложении (приложение С# asp.net MVC).
В основном разговоры идут примерно так:
Boss: "В нашей программе что-то не так, база данных клиента x сегодня ушла, и каждый видит страницу с ошибкой".
Me: "В основном каждая страница приложения использует базу данных для чего-то (кроме страницы с ошибкой), нет никакой разумной альтернативы, кроме как показать страницу с ошибкой".
Boss: "Наше приложение должно быть более устойчивым - часть приложения, которая не требует доступа к базе данных, все равно должна функционировать".
Часто случаи столь же экстремальны, как и это, но иногда мы сталкиваемся с ситуацией, когда мы интегрируемся с другой службой, где мы все еще можем безопасно отображать другие части страницы или завершить операцию, хотя и с некоторым раздражающим кодом, поскольку более поздние части кода должны позже использовать результаты операции, которые могут быть неудачными. Если есть много точек возможного отказа, это может превратиться в какой-то чрезвычайно неуправляемый код.
В общем, для "нормального" веб-приложения (не критически важного и т.д.) сколько времени "хорошие" разработчики тратят, пытаясь сделать свой код достаточно упругим, чтобы справляться с такими ситуациями. Мой босс, похоже, думает, что код должен справиться практически с любой ситуацией (не можете ли вы просто получить исключение?). Я не вижу, как это может быть экономичным, когда есть много возможных точек отказа.