Go на примерах: Паника (panic)

panic обычно означает, что произошло что-то непредвиденное. Чаще всего он используется для быстрого завершения при ошибках, которые не должны возникать в нормальных условиях или которые мы не готовы обработать корректно.

package main
import (
    "os"
    "path/filepath"
)
func main() {

На этом сайте мы используем panic для проверки неожиданных ошибок. Это единственная программа на сайте, которая специально вызывает panic.

    panic("a problem")

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

    path := filepath.Join(os.TempDir(), "file")
    _, err := os.Create(path)
    if err != nil {
        panic(err)
    }
}

Запуск этой программы вызовет panic, выведет сообщение об ошибке и трассировку горутин, а затем завершится с ненулевым статусом.

Когда срабатывает первый panic в main, программа завершается, не дойдя до остального кода. Если хочешь увидеть попытку создания временного файла, закомментируй первый вызов panic.

$ go run panic.go
panic: a problem
goroutine 1 [running]:
main.main()
    /.../panic.go:12 +0x47
...
exit status 2

Обрати внимание: в отличие от некоторых языков, использующих исключения для обработки многих ошибок, в Go принято по возможности использовать возвращаемые значения, указывающие на ошибку.

Далее: .