@Inyardic

Правильная обработка исключений?

Здравствуйте. Есть класс обертка над классом. В своей обертке я предусматриваю несколько случаев, где что-то может пойти не так- переданы некорректные данные, исходный класс возвратил неправильные данные и т.п. Каждый такой случай выкидывает разные исключения.
Вопрос в том, как правильно их отлавливать при использовании класса? Перехватывать базовое исключение, или лесенкой ловить каждое конкретное?
  • Вопрос задан
  • 774 просмотра
Решения вопроса 3
@vacslav-dev
web-developer
Лесенкой ловить от более частных к более общим. Последним перехватывается самое общее.
Ответ написан
Комментировать
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
Вопрос в том, как правильно их отлавливать при использовании класса? Перехватывать базовое исключение, или лесенкой ловить каждое конкретное?

Весь смысл использования специальных типов исключений в том, чтобы для каждой нештатной ситуации можно было реализовать свою логику обработки.
Ответ написан
Комментировать
@dmitryKovalskiy
программист средней руки
Зависит от логики обработки исключений. Если вы хотите их душить просто чтобы не вылетали клиенту, а в catch их логировать, то подойдет ловля общего исключения. Если у вас напротив - самый разнообразный набор обработчиков таких ситуаций - то подход "от частного к общему сверху вниз".
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
leahch
@leahch
3Д специалист. Долго, Дорого, Дерьмово.
Сейчас в меня будут кидать камни... Но исключения - это зло!
Жрут кучу времени и ресурсов, часто ничего поправить уже нельзя, рвется контекст выполнения, и т.д.
Так что,
1) Делайте проверки, везде, где это возможно, используйте значения по умолчанию.
2) Если уж возникло исключение, то обрабатывать его тут же, на этом же уровне.
3) Не стоит увлекаться созданием собственных исключений! В 95% случаев ситуацию можно устранить и без них! А в остальных 5% достаточно стандартных системных.
4) Все непрерываемые исключения - обрабатывать на верхних уровнях
Вотч то я хотел сказать - java-performance.info/throwing-an-exception-in-jav...
Ответ написан
@alexxandr
you'll see in memory only 0xDEADFACE
try {
....
} catch (exception & e) {
std::cout << "Всё абсолютно ОК!" << std::endl;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы