Функция log.Panic

Функция log.Panic предназначена для аварийного завершения программы. В первый параметр мы передаем форматированную строку, во второй и последующие параметры мы передаем значения, которые подставляются в форматную строку. При вызове этой функции программа завершается с паникой, выводя сообщение и трассировку стека.

Синтаксис

golog.Panic(format, a...)

Функция принимает форматную строку и переменное количество аргументов, которые подставляются в соответствии со спецификаторами формата.

Пример

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

gopackage main

import (
  "log"
)

func main() {
  log.Panic("critical error occurred")
}

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

go2026/09/04 15:04:05 critical error occurred
panic: critical error occurred

goroutine 1 [running]:
log.Panic({0x4c7e88?, 0x0?})
  /usr/local/go/src/log/log.go:394 +0x45
main.main()
  /your/path/main.go:8 +0x25
exit status 2

В выводе видно, что сообщение выводится с временной меткой, затем идет panic с тем же сообщением и трассировка стека.

Пример

Давайте используем форматирование для вывода более информативного сообщения:

gopackage main

import (
  "log"
)

func main() {
  userID := 42
  log.Panic("user %d not found in database", userID)
}

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

go2026/09/04 15:04:05 user 42 not found in database
panic: user 42 not found in database

goroutine 1 [running]:
log.Panic({0x4c7f78?, 0x0?})
  /usr/local/go/src/log/log.go:394 +0x45
main.main()
  /your/path/main.go:9 +0x45
exit status 2

Как видно, спецификатор %d заменяется на переданное значение, и сообщение становится более информативным.

Пример

Давайте используем панику внутри условного оператора для обработки ошибки:

gopackage main

import (
  "log"
  "strconv"
)

func main() {
  value := "abc"
  num, err := strconv.Atoi(value)
  if err != nil {
    log.Panic("failed to convert %s to int: %v", value, err)
  }
  log.Println("converted number:", num)
}

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

go2026/09/04 15:04:05 failed to convert abc to int: strconv.Atoi: parsing "abc": invalid syntax
panic: failed to convert abc to int: strconv.Atoi: parsing "abc": invalid syntax

goroutine 1 [running]:
log.Panic({0x4c80d8?, 0x0?})
  /usr/local/go/src/log/log.go:394 +0x45
main.main()
  /your/path/main.go:12 +0xc5
exit status 2

В этом примере показан типичный сценарий использования log.Panic - когда критическая ошибка делает невозможным дальнейшее выполнение программы.

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

  • функцию log.Panicln,
    которая завершает программу с паникой, выводя сообщение с переводом строки
  • функцию log.Panicf,
    которая завершает программу с паникой, используя форматирование
  • функцию log.Fatal,
    которая завершает программу без паники
  • функцию log.Print,
    которая выводит сообщение без завершения программы