Go в примерах: Panic

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

package main
import "os"
func main() {

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

    panic("a problem")

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

    _, err := os.Create("/tmp/file")
    if err != nil {
        panic(err)
    }
}

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

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

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

Следующий пример: Defer.