GoDasturchi
Exit Codes and Error Handling

Exit Codes and Error Handling

Chiqish kodlari va xatolarni boshqarish

Dastur tugaganda operatsion tizimga "muvaffaqiyatli tugadimi yoki yo'qmi" degan sonni ("exit code") qaytaradi. 0 — hamma narsa yaxshi, noldan boshqa son — biror muammo bo'lgani (odatda 1 — umumiy xato).

example.go
package main

import "fmt"

// Haqiqiy dasturda: agar xato bo'lsa, os.Exit(1) chaqiriladi
// va dastur darhol, muvaffaqiyatsiz kod bilan tugaydi.
// Bu yerda esa exit kodni HISOBLAB, uni chop etib ko'rsatamiz.

func exitCodeFor(err error) int {
	if err != nil {
		return 1
	}
	return 0
}

func main() {
	fmt.Println(exitCodeFor(nil))
	fmt.Println(exitCodeFor(fmt.Errorf("fayl topilmadi")))
}

os.Exit(kod) dasturni darhol shu kod bilan to'xtatadi (hech qanday defer ham ishlamaydi!). Shu sababli uni faqat main()ning eng oxirida, barcha tozalash ishlari tugagach chaqirish tavsiya etiladi. Odat bo'yicha: 0 — muvaffaqiyat, 1 — umumiy xato, 2 — noto'g'ri buyruq qatori argumentlari. Bu darsda os.Exitning o'zini chaqirmasdan, qaysi holatda qanday kod qaytarilishi kerakligini hisoblab chiqaramiz — shunda natijani (bir nechta holat uchun) solishtirish mumkin bo'ladi.

>_ Exercise

Turli xato holatlari uchun to'g'ri exit kodni hisoblang.

  • statusFor(valid bool, err error) funksiyasini yozing: err != nil bo'lsa 1, valid false bo'lsa 2, aks holda 0 qaytarsin
  • uch xil holat uchun chaqirib, natijalarni chop eting

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

Exit kodlar (0=muvaffaqiyat, 1=xato, 2=noto'g'ri argumentlar) — CLI dasturingizni chaqirgan boshqa skriptlarga natijani "aytib berish" usuli.

NEXT UP

Building Professional CLIs

OUTPUT

$ go run main.go
Kodingizni ishga tushiring

Exit Codes and Error Handling

Chiqish kodlari va xatolarni boshqarish

Dastur tugaganda operatsion tizimga "muvaffaqiyatli tugadimi yoki yo'qmi" degan sonni ("exit code") qaytaradi. 0 — hamma narsa yaxshi, noldan boshqa son — biror muammo bo'lgani (odatda 1 — umumiy xato).

example.go
package main

import "fmt"

// Haqiqiy dasturda: agar xato bo'lsa, os.Exit(1) chaqiriladi
// va dastur darhol, muvaffaqiyatsiz kod bilan tugaydi.
// Bu yerda esa exit kodni HISOBLAB, uni chop etib ko'rsatamiz.

func exitCodeFor(err error) int {
	if err != nil {
		return 1
	}
	return 0
}

func main() {
	fmt.Println(exitCodeFor(nil))
	fmt.Println(exitCodeFor(fmt.Errorf("fayl topilmadi")))
}

os.Exit(kod) dasturni darhol shu kod bilan to'xtatadi (hech qanday defer ham ishlamaydi!). Shu sababli uni faqat main()ning eng oxirida, barcha tozalash ishlari tugagach chaqirish tavsiya etiladi. Odat bo'yicha: 0 — muvaffaqiyat, 1 — umumiy xato, 2 — noto'g'ri buyruq qatori argumentlari. Bu darsda os.Exitning o'zini chaqirmasdan, qaysi holatda qanday kod qaytarilishi kerakligini hisoblab chiqaramiz — shunda natijani (bir nechta holat uchun) solishtirish mumkin bo'ladi.

>_ Exercise

Turli xato holatlari uchun to'g'ri exit kodni hisoblang.

  • statusFor(valid bool, err error) funksiyasini yozing: err != nil bo'lsa 1, valid false bo'lsa 2, aks holda 0 qaytarsin
  • uch xil holat uchun chaqirib, natijalarni chop eting

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

Exit kodlar (0=muvaffaqiyat, 1=xato, 2=noto'g'ri argumentlar) — CLI dasturingizni chaqirgan boshqa skriptlarga natijani "aytib berish" usuli.

NEXT UP

Building Professional CLIs