Назад к вопросам
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 — для их обработки и предотвращения аварийного завершения.