Универсальная обработка ошибок при вызове функций
От: es3000  
Дата: 06.02.19 05:45
Оценка:
Здравствуйте!

Есть код простого десктопного приложения для работы с простой БД.
Язык программирования — простой.
Никаких специальных библиотек не используется.

В этом коде есть достаточно "глубокие" вызовы методов (функций и процедур), начиная от пользовательской формы до низкоуровневых функций (например, функции чтения из БД и работы с файлами).

Стоит задача переделать этот код в части обработки ошибок.
Имеется ввиду обработка в вызывающих функциях тех ошибок, которые возникают в вызываемых функциях.

Сейчас обработка ошибок в разных функциях выполняется по разному.
Где-то используются коды возвратов, где-то выбрасываются исключения, причем исключения разных типов, где-то специальные объекты выбрасываются в виде исключений.
В общем целый зоопарк.

Посоветуйте, пожалуйста, как это лучше переделать?
Какой "механизм" обработки ошибок вы считаете наиболее "универсальным" и "удобным"?

Хотелось бы, чтобы код по обработке ошибок в разных местах программы был примерно одинаковым.

Также нужно, чтобы при обработке ошибки в пользовательской форме можно было "проследить" всю цепочку ошибок от самой "низкой" до самой "верхней".
Обычно в этом случае просто выдается сообщение.
Нужно, чтобы это сообщение содержало описания всех ошибок в цепочке.
Например в таком виде:
— Карточка товара открыта только для просмотра
— Невозможно прочитать все данные о товаре
— Ошибка при чтении остатков товара
— Ошибка выполнения запроса к базе данных
— Неверный формат запроса: поле не может быть пустым

Возможно, есть еще какие-нибудь важные вещи, которые могут понадобиться при обработке ошибок, но мы пока о них не догадываемся по неопытности.
Например, пока писал сообщение, пришла такая мысль.
Удобно наличие связи обработки ошибок с механизмом протоколирования работы программы: чтобы возникновение ошибки сразу попадало в лог (протокол, журнал) программы.

Существует ли какая-нибудь "теория" по обработке ошибок?
Можно ли что-то почитать по этой теме?

В общем помогите разобраться, как правильно переработать код программы?
Отредактировано 06.02.2019 5:46 es3000 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.