Я сделал большую программу, которая открывает и закрывает файлы и базы данных, выполняет запись и чтение в них и т. д. среди прочего. Поскольку не было такой вещи, как «обработка исключений в процессе», и поскольку я действительно не знал об операторе «отложить» и функции «восстановить()», я применил проверку ошибок после каждого открытия файла, чтения-записи, записи в базу данных и т.д.
_,insert_err := stmt.Run(query)
if insert_err != nil{
mylogs.Error(insert_err.Error())
return db_updation_status
}
Для этого я определяю db_updation_status в начале как «false» и не делаю его «true», пока все в программе не пойдет правильно. Я делал это в каждой функции после каждой операции, которая, как мне кажется, могла пойти не так.
Как вы думаете, есть ли лучший способ сделать это с помощью defer-panic-recover? Я прочитал об этом здесь http://golang.org/doc/articles/defer_panic_recover.html, но не могу понять, как их использовать. Предлагают ли эти конструкции что-то похожее на обработку исключений? Мне лучше без этих конструкций? Я был бы очень признателен, если бы кто-нибудь объяснил мне это простым языком и/или предоставил вариант использования этих конструкций и сравнил их с типом обработки ошибок, который я использовал выше.