လွယ်လွယ်ပြောရရင် try-except ဆိုတာ Python မှာ “ဒီအပိုင်းကို စမ်းလုပ်ကြည့်၊ error တက်ရင် program ကို မကျစေဘဲ ဒီလိုကိုင်” လို့ ပြောတဲ့ နည်းပါ။ အမှားကို ကြိုတင် ခံထားတဲ့ ကူရှင်လိုပေါ့။ (Python အခြေခံ series ဆက်ပါ။)

ကိုယ်က သူငယ်ချင်းကို ဖုန်းဆက်တယ် ဆိုပါစို့။ ကိုယ် တွေးထားတာ — “ဖုန်းကိုင်ရင် ပြောစရာရှိတယ်၊ မကိုင်ရင် message ပို့မယ်”။

try: ဖုန်းခေါ်ကြည့်
except (မကိုင်ရင်): message ပို့

ဖုန်းမကိုင်လို့ ကိုယ် စိတ်ဓာတ်ကျပြီး ထိုင်ငိုနေမှာ မဟုတ်ဘူး — Plan B ရှိပြီးသားကိုး။ try-except လည်း ဒီလိုပဲ။ “ဒီ code ကို run ကြည့်၊ error တက်ရင် program ကို ရပ်မပစ်ဘဲ ဒီအတိုင်း ဆက်လုပ်” လို့ ကြိုပြောထားတာ။

ဥပမာ ဒီ program လေး ကြည့်ပါ —


age = int(input("အသက်ထည့်ပါ: "))
print("နောက် ၁၀ နှစ်ဆို", age + 10, "နှစ်ရှိပြီ")

User က “abc” လို့ ရိုက်ထည့်လိုက်ရင် int("abc") က error (ValueError) တက်ပြီး program တစ်ခုလုံး ကျသွားတယ်။ Traceback အနီတွေ ထွက်လာပြီး user က ကြောက်သွားတယ်။

try-except ထည့်လိုက်ရင် —


try:
    age = int(input("အသက်ထည့်ပါ: "))
    print("နောက် ၁၀ နှစ်ဆို", age + 10, "နှစ်ရှိပြီ")
except ValueError:
    print("ကိန်းဂဏန်းပဲ ထည့်ပေးပါနော်!")

“abc” ရိုက်လည်း program မကျတော့ဘူး — “ကိန်းဂဏန်းပဲ ထည့်ပေးပါနော်!” လို့ ယဉ်ယဉ်ကျေးကျေး ပြောပြီး ဆက်သွားတယ်။ Error ကို လူကြီးမင်းဆန်ဆန် ကိုင်တွယ်လိုက်တာပေါ့။ 🙂

ဘယ်အချိန်မှာ သုံးလဲ?

User ကနေ input တောင်းတိုင်း — လူက ဘာရိုက်မလဲ ဘယ်သူမှ မသိဘူး
ဖိုင်ဖွင့်တိုင်း — ဖိုင် မရှိရင် FileNotFoundError တက်တယ်
Internet နဲ့ ဆက်သွယ်တိုင်း — လိုင်းကျရင် error တက်တယ်
စားခြင်း (division) လုပ်တိုင်း — သုညနဲ့ စားရင် ZeroDivisionError တက်တယ်

နောက်ထပ် သိထားသင့်တာလေးတွေ —

except နောက်မှာ error အမျိုးအစား ထည့်ရေး (except ValueError:) — ဘာမှ မထည့်ဘဲ except: ချည်း ရေးရင် error တိုင်းကို မျက်စိမှိတ် ဖမ်းသလို ဖြစ်ပြီး debug လုပ်ရ ခက်တယ်
finally: ဆိုတာ error တက်တက် မတက်တက် အမြဲလုပ်မယ့် အပိုင်း — ဖိုင်ပိတ်တာမျိုးမှာ သုံး

အမှားတက်တာ ရှက်စရာ မဟုတ်ဘူး။ Professional programmer တွေရဲ့ program တွေလည်း error တက်တာပဲ — ကွာခြားတာက သူတို့က error ကို ကြိုတင် စီစဉ်ထားတာ။ try-except က “အမှားကို ကြောက်စရာမလို၊ စီစဉ်ထားရင် ရပြီ” ဆိုတဲ့ စိတ်ဓာတ်ပဲ။