package main
import "os"
func main() {
// Bu saytda noodatiy xatolarni ko'rsatish uchun ba'zan panic ishlatamiz
// (Bu yerda ataylab panic chaqirilyapti)
panic("a problem")
// Ko'p uchraydigan holat: funksiya xato qaytarsa va uni boshqarishni istamasak — darhol to'xtash
// Quyida yangi fayl yaratishda kutilmagan xato bo'lsa, panic qilamiz
_, err := os.Create("/tmp/file")
if err != nil {
panic(err)
}
}
Dastur ishga tushirilganda panic yuz beradi, xabar va goroutina izlari (stack trace) chiqariladi, hamda nol bo'lmagan status bilan tugaydi.
Eslatma: main ichidagi birinchi panic ishga tushgach, keyingi kodga yetib bormaydi. Agar vaqtinchalik fayl yaratish qismiga ham qaramoqchi bo'lsangiz, birinchi panic ni izohga oling.
Terminalda bajarish (namuna):
$ go run panic.go
panic: a problem
goroutine 1 [running]:
main.main()
/.../panic.go:12 +0x47
...
exit status 2
Diqqat: Ba'zi tillarda ko'plab xatolarni istisnolar (exceptions) bilan boshqarish odatiy bo'lsa, Go'da imkon qadar xatolarni qaytish qiymati orqali boshqarish idiomatik hisoblanadi.