Функция panic

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

Синтаксис

gopanic(interface{})

Пример

Давайте рассмотрим простой пример вызова паники:

gopackage main

import "fmt"

func main() {
  fmt.Println("Start")
  panic("something went wrong")
  fmt.Println("End")
}

Результат выполнения кода:

go"Start"
"panic: something went wrong"

Пример

Давайте рассмотрим использование panic вместе с defer. Отложенные функции выполняются даже при панике:

gopackage main

import "fmt"

func main() {
  defer fmt.Println("Deferred function 1")
  defer fmt.Println("Deferred function 2")

  panic("critical error")
}

Результат выполнения кода:

go"Deferred function 2"
"Deferred function 1"
"panic: critical error"

Пример

Часто panic используют для обработки ситуаций, которые не должны происходить в正常工作 программы. Например, при невозможности инициализации важного компонента:

gopackage main

import "fmt"

func initConfig() {
  // Simulate a critical failure
  panic("failed to load configuration")
}

func main() {
  fmt.Println("Starting application")
  initConfig()
  fmt.Println("Application running")
}

Результат выполнения кода:

go"Starting application"
"panic: failed to load configuration"

Смотрите также

  • функцию recover,
    которая позволяет перехватить панику и восстановить выполнение
  • инструкцию defer,
    которая откладывает выполнение функции до завершения окружающей функции
  • инструкцию return,
    которая завершает выполнение текущей функции и возвращает результат
  • инструкцию if,
    которая используется для условного выполнения кода