Вопрос: Как работает panic/recover и где это уместно?
Go
Junior
Без компании
Вопрос: Как работает panic/recover и где это уместно?
Ответы
panic — аварийное завершение текущей горутины с раскруткой стека. recover позволяет перехватить panic только внутри defer.
```go
package main
import "fmt"
func safe() {
defer func() {
if r := recover(); r != nil {
fmt.Println("recovered:", r)
}
}()
panic("boom")
}
func main() {
safe()
fmt.Println("after")
}
```
Уместно для "невозможных" ситуаций (инварианты, ошибки программиста), а не для обычных ошибок ввода/сети.