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).
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.
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
$ go run main.go
Kodingizni ishga tushiring