ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်
Part 2 အထိ Contact Book က CRUD operations အားလုံး အလုပ်လုပ်နေပြီ ဖြစ်ပေမယ့် user က invalid input (empty name, wrong menu choice) ရိုက်ရင် app crash သွားနိုင်ပါတယ်။ Advanced chapter က exception handling (try/catch) concept ကို ဒီနေရာမှာ လက်တွေ့ အသုံးချပြီး app ကို robust ဖြစ်အောင် ပြင်ဆင်မှာပါ။ ဒါအပြင် LINQ OrderBy() နဲ့ contacts list ကို name အလိုက် sort လုပ်ပြီး ပြသတဲ့အခါ ပိုသေချာသင့်တင့်စေမှာပါ။ ဒီ part ပြီးရင် Contact Book project က end-to-end အနေနဲ့ ပြည့်စုံသွားပါပြီ — Basic, Intermediate, Advanced chapters သုံးခုလုံးက concept တွေကို တစ်ခုတည်းသော project ထဲမှာ ပေါင်းစပ်အသုံးချနိုင်ခဲ့ပါပြီ။
လက်တွေ့ ဆောက်ကြည့်မယ်
Custom exception class InvalidContactException ကို Exception ကနေ inherit ပြီး ရေးပါ။ AddContact() method ထဲမှာ Name သို့မဟုတ် Phone က empty ဖြစ်ရင် InvalidContactException throw လုပ်ပါ။ Main() method ရဲ့ Add branch ထဲမှာ try/catch နဲ့ ဒီ exception ကို catch ပြီး error message ကို console မှာ ပြပါ။ ShowAll() method ကို LINQ OrderBy(c => c.Name) သုံးပြီး name အက္ခရာစဉ် sort ဖြစ်အောင် ပြင်ပါ။ နောက်ဆုံးအနေနဲ့ Console.WriteLine() တွေနဲ့ output format ကို header/separator line ထည့်ပြီး ပိုကြည့်ကောင်းအောင် polish လုပ်ပါ။
Code နမူနာ
class InvalidContactException : Exception
{
public InvalidContactException(string message) : base(message) { }
}
class ContactManager
{
private List<Contact> contacts = new List<Contact>();
public void AddContact(Contact c)
{
if (string.IsNullOrWhiteSpace(c.Name) || string.IsNullOrWhiteSpace(c.Phone))
{
throw new InvalidContactException("Name and Phone are required.");
}
contacts.Add(c);
}
public void ShowAll()
{
Console.WriteLine("---- Contact List (sorted) ----");
foreach (Contact c in contacts.OrderBy(c => c.Name))
{
Console.WriteLine($"{c.Name,-15} | {c.Phone,-12} | {c.Email}");
}
Console.WriteLine("--------------------------------");
}
}
// Main() ရဲ့ Add branch ထဲမှာ
// try
// {
// manager.AddContact(new Contact { Name = name, Phone = phone, Email = email });
// Console.WriteLine("Contact added successfully.");
// }
// catch (InvalidContactException ex)
// {
// Console.WriteLine("Error: " + ex.Message);
// }Empty name/phone နဲ့ contact add လုပ်ဖို့ ကြိုးစားရင် app crash မဖြစ်ဘဲ error message ပြပြီး၊ contact list ကို name အက္ခရာစဉ်အတိုင်း သင့်တင့်စွာ ပြနိုင်တဲ့ ပြီးပြည့်စုံတဲ့ Contact Book app ရရှိပါမယ်။၅ မိနစ် စမ်းကြည့်
Phone number format ကို regex သို့မဟုတ် simple length check နဲ့ validate လုပ်ပြီး၊ format မမှန်ရင် InvalidContactException ထပ်ထုတ်အောင် ပြင်ကြည့်ပါ။
သတိလေးတစ်ချက်
Exception ကို catch လုပ်ရုံနဲ့ silent ဖြစ်အောင် message မပြဘဲ ချန်ထားခြင်း မလုပ်ပါနဲ့ — user ကို ဘာမှားနေလဲ အမြဲ ပြောပြပါ။