এমন পরিস্থিতি রয়েছে যেখানে আপনি সেগুলি ব্যবহার করতে পারেন তবে সেগুলি খুব কমই হওয়া উচিত। আমি যে কোনও পরিস্থিতিতে ব্যবহার করতে পারি সেগুলির মধ্যে রয়েছে:
ব্যতিক্রম লগিং; প্রসঙ্গের উপর নির্ভর করে আপনি তার পরিবর্তে পোস্টহীন ব্যতিক্রম বা বার্তা পোস্ট করতে পারেন want
প্রযুক্তিগত পরিস্থিতি, যেমন রেন্ডারিং বা সাউন্ড প্রসেসিং বা একটি তালিকার বাক্স কলব্যাকের মতো লুপিং, যেখানে আচরণটি নিজেই সমস্যাটি দেখায় সেখানে একটি ব্যতিক্রম ছুঁড়ে ফেলার উপায়টি পাওয়া যায় এবং ব্যতিক্রমটি লগ ইন করলে সম্ভবত 1000 এর "এক্সএক্সএক্সএফ ব্যর্থ" বার্তাগুলি আসে ।
প্রোগ্রামগুলি যে ব্যর্থ হতে পারে না , যদিও তাদের এখনও কমপক্ষে কিছু লগইন করা উচিত।
বেশিরভাগ উইনফর্ম অ্যাপ্লিকেশনগুলির জন্য, আমি দেখতে পেয়েছি যে প্রতিটি ব্যবহারকারীর ইনপুটটির জন্য একক চেষ্টা করার স্টেটমেন্টটি যথেষ্ট। আমি নিম্নলিখিত পদ্ধতিগুলি ব্যবহার করি: (অ্যালার্টবক্সটি কেবলমাত্র একটি দ্রুত মেসেজবক্স S শো র্যাপার)
public static bool TryAction(Action pAction)
{
try { pAction(); return true; }
catch (Exception exception)
{
LogException(exception);
return false;
}
}
public static bool TryActionQuietly(Action pAction)
{
try { pAction(); return true; }
catch(Exception exception)
{
LogExceptionQuietly(exception);
return false;
}
}
public static void LogException(Exception pException)
{
try
{
AlertBox(pException, true);
LogExceptionQuietly(pException);
}
catch { }
}
public static void LogExceptionQuietly(Exception pException)
{
try { Debug.WriteLine("Exception: {0}", pException.Message); } catch { }
}
তারপরে প্রতিটি ইভেন্ট হ্যান্ডলার এর মতো কিছু করতে পারে:
private void mCloseToolStripMenuItem_Click(object pSender, EventArgs pEventArgs)
{
EditorDefines.TryAction(Dispose);
}
অথবা
private void MainForm_Paint(object pSender, PaintEventArgs pEventArgs)
{
EditorDefines.TryActionQuietly(() => Render(pEventArgs));
}
তাত্ত্বিকভাবে, আপনি চেষ্টা করতে পারেন নিবন্ধন কল যা রেন্ডারিং জন্য ভাল হতে পারে যাতে একটি ব্যতিক্রম অন্তহীন পরিমাণ বার্তা উত্পন্ন না করে।