Panic

Паніка|Panic #

// `panic` або `паніка` зазвичай означає те, що щось пішло
// неочікувано погано. Дуже погано. В більшості випадків, ми
// використовуємо її задля швидкого провалу
// на помилках які зазвичай не мали б виникати, або
// на помилках які ми не здатні опрацювати акуратно.

package main

import "os"

func main() {

	// Ми скористаємось панікою в цьому прикладі для індикації
	// неочікуваної помилки. Єдина мета цієї ділянки коду
	// запанікувати.
	panic("маємо проблему")

	// Загальне використання `panic`и - перервати виконання функції,
	// воно повертає помилку яку ми не знаємо як опрацьовувати
	// (або не хочемо). Ось приклад `panic`и де ми отримали
	// неочікувану помилку, під час створення файлу, з якою ми не
	// дуже хочемо мати справу.
	_, err := os.Create("/tmp/file")
	if err != nil {
		panic(err)
	}
}
# Запуск цієї програми призведе до її паніки, виводу
# повідомлення помилки та сліду горутини, та виходу з
# не нульовим статусом.

# When first panic in `main` fires, the program exits
# without reaching the rest of the code. If you'd like
# to see the program try to create a temp file, comment
# the first panic out.
$ go run panic.go
panic: маємо проблему

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

# Зауважте що, на відміну від інших мов що
# використовують виключення (exceptions) для опрацювання
# помилок, в GO ідіоматично викорисовувати -
# _повернення помилок_, що вказуватимуть
# на проблеми як умога частіше.