Введение
В Golang recover - это встроенная функция, которая может использоваться для восстановления от паники. В этом лабе будет проверяться ваша способность использовать recover для обработки паник.
This tutorial is from open-source community. Access the source code
В Golang recover - это встроенная функция, которая может использоваться для восстановления от паники. В этом лабе будет проверяться ваша способность использовать recover для обработки паник.
Функция mayPanic в предоставленном коде будет вызывать панику при вызове. Ваша задача - модифицировать функцию main для восстановления от паники и вывода сообщения об ошибке.
recover для обработки паники в функции mayPanic.$ go run recover.go
Recovered. Error:
a problem
Ниже представлен полный код:
// Go позволяет _восстанавливаться_ от паники,
// используя встроенную функцию `recover`. `recover` может
// остановить панику, не прерывая выполнение программы, и
// позволить ей продолжить выполнение вместо этого.
// Пример того, где это может быть полезно: сервер
// не должен завершаться сбоем, если у одного из соединений
// клиента возникает критическая ошибка. Вместо этого сервер
// должен закрыть это соединение и продолжать обслуживать
// других клиентов. На самом деле, именно так по умолчанию
//行事 Go's `net/http` для HTTP-серверов.
package main
import "fmt"
// Эта функция вызывает панику.
func mayPanic() {
panic("a problem")
}
func main() {
// `recover` должен вызываться внутри отложенной функции.
// Когда окружающая функция вызывает панику, отложенная
// функция будет активирована, и вызов `recover` внутри нее
// поймает панику.
defer func() {
if r := recover(); r!= nil {
// Возвращаемое значение `recover` - это ошибка,
// поднимаемая при вызове `panic`.
fmt.Println("Recovered. Error:\n", r)
}
}()
mayPanic()
// Этот код не будет выполняться, потому что `mayPanic` вызывает панику.
// Выполнение `main` останавливается в точке паники и продолжается
// в отложенной функции.
fmt.Println("После mayPanic()")
}
В этом лабе вы узнали, как использовать функцию recover для обработки паник в Golang. Используя recover, вы можете предотвратить аварийное завершение программы и продолжить выполнение кода.