👁 В Go работа с ошибками часто является неотъемлемой частью бизнес-логики. Важно уметь правильно управлять ошибками в условиях многозадачности или при работе с ресурсами, которые могут привести к сбоям. Использование конструкций defer, panic и recover позволяет не только предотвращать ошибки, но и организовывать чистку ресурсов при их возникновении.
📝 Пример кода:
package main
import (
"fmt"
"log"
)
func riskyFunction() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Ошибка поймана:", r)
}
}()
fmt.Println("Начинаю выполнение функции...")
panic("Что-то пошло не так!") // Имитируем ошибку
}
func main() {
fmt.Println("Запуск программы...")
riskyFunction()
fmt.Println("Программа завершена.")
}📌 Как это работает:
defer: откладывает выполнение кода до выхода из текущей функции, что полезно для чистки ресурсов (например, закрытия файлов)panic: генерирует ошибку, аналогичную исключению в других языках, что позволяет мгновенно прервать выполнениеrecover: используется для перехвата паники, предотвращая крах программы и позволяя обработать ошибку
❗️ Этот подход позволяет эффективно обрабатывать ошибки в более сложных приложениях, где необходимо обеспечить устойчивость к сбоям и корректную очистку ресурсов. Применяется, например, в ситуациях, когда нужно контролировать ошибки работы с сетью или базой данных, а также управлять многозадачностью в крупных проектах.
tags: #go #разработка
❤️ @recura_tech



