Есть код простого десктопного приложения для работы с простой БД.
Язык программирования — простой.
Никаких специальных библиотек не используется.
В этом коде есть достаточно "глубокие" вызовы методов (функций и процедур), начиная от пользовательской формы до низкоуровневых функций (например, функции чтения из БД и работы с файлами).
Стоит задача переделать этот код в части обработки ошибок.
Имеется ввиду обработка в вызывающих функциях тех ошибок, которые возникают в вызываемых функциях.
Сейчас обработка ошибок в разных функциях выполняется по разному.
Где-то используются коды возвратов, где-то выбрасываются исключения, причем исключения разных типов, где-то специальные объекты выбрасываются в виде исключений.
В общем целый зоопарк.
Посоветуйте, пожалуйста, как это лучше переделать?
Какой "механизм" обработки ошибок вы считаете наиболее "универсальным" и "удобным"?
Хотелось бы, чтобы код по обработке ошибок в разных местах программы был примерно одинаковым.
Также нужно, чтобы при обработке ошибки в пользовательской форме можно было "проследить" всю цепочку ошибок от самой "низкой" до самой "верхней".
Обычно в этом случае просто выдается сообщение.
Нужно, чтобы это сообщение содержало описания всех ошибок в цепочке.
Например в таком виде:
— Карточка товара открыта только для просмотра
— Невозможно прочитать все данные о товаре
— Ошибка при чтении остатков товара
— Ошибка выполнения запроса к базе данных
— Неверный формат запроса: поле не может быть пустым
Возможно, есть еще какие-нибудь важные вещи, которые могут понадобиться при обработке ошибок, но мы пока о них не догадываемся по неопытности.
Например, пока писал сообщение, пришла такая мысль.
Удобно наличие связи обработки ошибок с механизмом протоколирования работы программы: чтобы возникновение ошибки сразу попадало в лог (протокол, журнал) программы.
Существует ли какая-нибудь "теория" по обработке ошибок?
Можно ли что-то почитать по этой теме?
В общем помогите разобраться, как правильно переработать код программы?
Почитал форум.
Нашел книгу "Инфраструктура программных проектов_соглашения, идиомы и шаблоны для многократно используемых библиотек .NET".
Прочитал главу про исключения.
В общем понятно, что надо весь код переделывать на исключения.
Только не понятен один момент: как в точке перехвата исключения отследить всю цепочку ошибок?
Ведь исключения могли быть "проброшены" с формированием нового типа исключения.
Re[2]: Универсальная обработка ошибок при вызове функций