လွယ်လွယ်ပြောရရင် Exception Handling ဆိုတာ program run နေတုန်း ထင်မှတ်မထားတဲ့ error တစ်ခုခု တက်လာရင် program တစ်ခုလုံး ပြိုမသွားအောင် ကြိုတင်ကာကွယ်ပြီး လှလှပပ ကိုင်တွယ်တဲ့ နည်းလမ်းပါ။

ကျွန်တော် code စရေးတုန်းက ဒီအမှားကို အကြိမ်ကြိမ် လုပ်ဖူးတယ်။ User က ဂဏန်း ရိုက်ထည့်ရမယ့်နေရာမှာ စာရိုက်ထည့်လိုက်တယ်၊ program က ချက်ချင်း crash ဖြစ်ပြီး ပိတ်သွားတယ်။ User က ဘာဖြစ်မှန်း မသိဘူး၊ ကိုယ်လည်း မျက်နှာပျက်ရတယ်။ Exception Handling က အဲဒီ “ပြိုလဲခြင်း” ကို “သည်းခံခြင်း” အဖြစ် ပြောင်းပေးတာ။

ထမင်းချက်သလို စဉ်းစားကြည့်မယ်

ထမင်းအိုးတည်တယ်ဆိုပါစို့။ မီးပျက်သွားရင် ဘာလုပ်မလဲ? ထမင်းအိုး တစ်ခုလုံးကို လွှင့်ပစ်မလား၊ ဒါမှမဟုတ် မီးပြန်လာတဲ့အထိ စောင့်မလား? Exception Handling ကလည်း အဲဒီလိုပဲ — ပြဿနာ တက်လာတိုင်း program ကို လွှင့်ပစ်တာမဟုတ်ဘဲ၊ ပြဿနာကို ကိုင်တွယ်ပြီး ဆက်သွားဖို့ စီစဉ်ထားတာ။

Python မှာ ပုံစံက ဒီလိုပါ။


try:
    number = int(input("ဂဏန်းရိုက်ပါ: "))
    result = 100 / number
    print(result)
except ValueError:
    print("ဂဏန်းပဲ ရိုက်ပါနော်")
except ZeroDivisionError:
    print("သုညနဲ့ စားလို့ မရဘူးနော်")
finally:
    print("ဒီအပိုင်းကတော့ ဘာဖြစ်ဖြစ် အမြဲ run တယ်")

try — “ဒီအပိုင်းကို စမ်းလုပ်ကြည့်မယ်၊ error တက်လည်း ရတယ်” ဆိုတဲ့ အပိုင်း။
except — error တက်လာရင် ဘာလုပ်မလဲဆိုတာ။ error အမျိုးအစားအလိုက် သီးခြား ကိုင်တွယ်လို့ ရတယ်။
finally — error တက်တက် မတက်တက် အမြဲ run ရမယ့် အပိုင်း။ ဥပမာ ဖွင့်ထားတဲ့ file ကို ပြန်ပိတ်တာ။

ဘယ် error တွေကို ကိုင်တွယ်လေ့ရှိလဲ?

File မရှိတာ — user က “notes.txt” လို့ ပြောပေမယ့် file က မရှိဘူး။ FileNotFoundError။
သုညနဲ့ စားတာ — သင်္ချာမှာ မရဘူး။ ZeroDivisionError။
Internet ပြတ်တာ — API ကို ခေါ်နေတုန်း connection ပြတ်သွားတယ်။
ဂဏန်းနေရာမှာ စာ ရိုက်တာ — ValueError။
Database ချိတ်မရတာ — server က ကျသွားတာ၊ password မှားတာ။

လုပ်လေ့ရှိတဲ့ အမှား ၃ ခု

ဘာသာ ဘာဝ အကုန်လုံးကို except တစ်ခုတည်းနဲ့ ဖမ်းတာ — error ဘာဖြစ်မှန်း မသိတော့ဘူး၊ debug လုပ်ရ ခက်သွားတယ်။
error ကို ဖမ်းပြီး တိတ်တိတ်လေး မျိုမြုပ်ပစ်တာ — program က ဆက်သွားတယ်၊ ဒါပေမယ့် data က မှားနေတယ်၊ ဘယ်သူမှ မသိဘူး။ အဲဒါက crash ထက် ပိုဆိုးတယ်။
try ကို တစ်ခုလုံး ခြုံတာ — ကိုယ့် code တစ်ခုလုံးကို try ထဲ ထည့်လိုက်ရင် ဘယ်နေရာက error တက်မှန်း ရှာရ ခက်သွားတယ်။ error တက်နိုင်တဲ့ နေရာလေးကိုပဲ try နဲ့ ဝိုင်းပါ။

တကယ့် အလုပ်မှာ ဘယ်လို သုံးလဲ?

Website မှာ login form တစ်ခုရှိတယ်။ User က password မှားရိုက်ရင် site တစ်ခုလုံး error page ပြတာမဟုတ်ဘဲ “password မှားနေပါတယ်” လို့ ယဉ်ယဉ်ကျေးကျေး ပြန်ပြောတာ — ဒါ exception handling ပဲ။
Bank app မှာ ငွေလွှဲနေတုန်း internet ပြတ်သွားရင် “ငွေလွှဲမှု မအောင်မြင်ပါ၊ ငွေ ပြန်ရောက်ပါမယ်” လို့ ပြတာ — ဒါလည်း exception handling ပဲ။
Game ဆော့နေတုန်း save file ပျက်သွားရင် game တစ်ခုလုံး crash မသွားဘဲ “save file ပျက်နေပါတယ်၊ အသစ်စမလား?” လို့ မေးတာ။

ကိုယ့်အတွက် မှတ်စရာ

error တက်နိုင်တဲ့နေရာကို ကြိုတွေးပါ။ user က အမြဲ မှန်မှန်ကန်ကန် ရိုက်ထည့်မယ်လို့ ဘယ်တော့မှ မယူဆပါနဲ့။
error message ကို user နားလည်တဲ့ ဘာသာစကားနဲ့ ပြပါ။ “ZeroDivisionError: division by zero” ထက် “သုညနဲ့ စားလို့ မရပါ” က ပိုအသုံးဝင်တယ်။
error ကို log ထဲ မှတ်ပါ။ user ကို ယဉ်ကျေးစွာ ပြပြီး၊ developer အတွက် အသေးစိတ်ကို log file ထဲ ထားပါ။

Program ကောင်းတစ်ခု ဆိုတာ error လုံးဝ မတက်တဲ့ program မဟုတ်ဘူး။ error တက်လာရင်တောင် လှလှပပ ကိုင်တွယ်ပြီး user ကို မဒုက္ခပေးတဲ့ program ပဲ။ ဒါကြောင့် exception handling ကို code ရေးတိုင်း သတိရပါ။ 🙂

Avatar photo
Min SiThu
@itseminsithu

Software Engineer & Tech Content Creator

View all posts