Функция log.Panicln

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

Синтаксис

golog.Panicln(message)

Пример

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

gopackage main

import (
  "log"
)

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

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

go2026/01/15 10:30:45 critical error occurred
panic: critical error occurred

goroutine 1 [running]:
log.Panicln(0x...)
  /usr/local/go/src/log/log.go:... +0x...
main.main()
  /tmp/sandbox/prog.go:8 +0x...

Пример с использованием fmt.Println

Давайте сравним поведение log.Panicln и fmt.Println:

gopackage main

import (
  "fmt"
  "log"
)

func main() {
  fmt.Println("This message will be printed")
  log.Panicln("This message will be logged and cause panic")
  fmt.Println("This message will never be printed")
}

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

goThis message will be printed
2026/01/15 10:30:45 This message will be logged and cause panic
panic: This message will be logged and cause panic

goroutine 1 [running]:
log.Panicln(0x...)
  /usr/local/go/src/log/log.go:... +0x...
main.main()
  /tmp/sandbox/prog.go:10 +0x...

Как видно из примера, после вызова log.Panicln программа завершается с паникой, и последующий код не выполняется.

Пример с обработкой паники

Давайте перехватим панику с помощью recover:

gopackage main

import (
  "fmt"
  "log"
)

func main() {
  defer func() {
    if r := recover(); r != nil {
      fmt.Println("Recovered from panic:", r)
    }
  }()
  
  log.Panicln("panic with custom message")
  fmt.Println("This will not be executed")
}

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

go2026/01/15 10:30:45 panic with custom message
Recovered from panic: panic with custom message

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

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