Теория по обработке ошибок?
большинство советов по обработке ошибок сводится к нескольким советам и трюкам (см. Этот пост, например). Эти советы полезны, но я думаю, что они не отвечают на все вопросы. Я чувствую, что должен разработать свое приложение в соответствии с определенной философией, школой мысли, которая обеспечивает прочную основу для развития. Есть ли такая теория на тему обработки ошибок?
вот несколько практических вопросов:
- как решить, если ошибка должен ли обрабатываться локально или распространяться на код более высокого уровня?
- Как выбрать между протоколированием ошибки или отображением ее в виде сообщения об ошибке для пользователя?
- входит, то, что должно быть сделано в коде приложения? Или это нормально, чтобы сделать некоторые записи из кода библиотеки.
- в случае исключения, где вы должны вообще поймать их? В коде низкого или более высокого уровня?
- если вы стремитесь к единой обработке ошибок стратегия через все уровни кода, или попытаться разработать систему, которая может адаптироваться к различным стратегиям обработки ошибок (для того, чтобы иметь возможность иметь дело с ошибками из сторонних библиотек).
- имеет ли смысл создавать список кодов ошибок? Или это старомодно в наши дни?
во многих случаях здравого смысла достаточно для разработки достаточно хорошей стратегии для борьбы с ошибочными условиями. Тем не менее, я хотел бы знать, есть ли еще формальный / "научный" подход?
PS: Это общий вопрос, но c++ конкретные ответы тоже приветствуются (C++ - мой основной язык программирования для работы).