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