Sobes.tech
Назад к вопросам
Junior — Middle
79

Каким образом в Go реализована работа с паническими состояниями и обработкой ошибок, вызванных аварийными ситуациями?

Компании, где спрашивали
Lamoda Tech
Магнит Тех
Самокат Тех
Киберпротект

Ответ от нейросети

sobes.tech AI

В Go панические состояния (panic) используются для обработки критических ошибок, которые обычно приводят к аварийному завершению программы. Для управления такими ситуациями применяется механизм отложенных вызовов (defer) вместе с функцией recover, которая позволяет перехватить панику и предотвратить крах программы.

Пример:

package main

import "fmt"

func safeDivision(a, b int) {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Восстановление после паники:", r)
        }
    }()

    if b == 0 {
        panic("деление на ноль")
    }
    fmt.Println("Результат:", a/b)
}

func main() {
    safeDivision(10, 2) // Выведет: Результат: 5
    safeDivision(10, 0) // Восстановление после паники: деление на ноль
}

Таким образом, panic используется для сигнализации о серьезных ошибках, а recover — для их обработки и предотвращения аварийного завершения.