مدیریت استثناءها و خطایابی

بهترین برنامه نویسان در هنگام برنامه نویسی با خطاها و باگ‌ها در برنامه‌شان مواجه می‌شوند. درصد زیادی از برنامه‌ها هنگام تست برنامه با خطا مواجه می‌شوند. بهتر است برای از بین بردن یا به حداقل رساندن این خطاها، به کاربر در مورد دلایل به وجود آمدن آنها اخطار داده شود. خوشبختانه ++C برای این مشکل راه حلی ارائه داده است. این زبان دارای مجموعه ای از کلاسهایی است که برای برطرف کردن خطاهای خاص از آنها استفاده می‌کند.

استثناءها در ++C راهی برای نشان دادن دلیل وقوع خطا در هنگام اجرای برنامه است. استثناءها توسط برنامه به وجود می‌آیند و شما لازم است که آنها را اداره کنید. به عنوان مثال در دنیای کامپیوتر یک عدد صحیح هرگز نمی‌تواند بر صفر تقسیم شود. اگر بخواهید این کار را انجام دهید (یک عدد صحیح را بر صفر تقسیم کنید)، با خطا مواجه می‌شوید. اگر یک برنامه در ++C با چنین خطایی مواجه شود پیغام خطای “DivideByZeroException” نشان داده می‌شود که بدین معنا است که عدد را نمی‌توان بر صفر تقسیم کرد.

باگ (Bug) اصطلاحاً خطا یا کدی است که رفتارهای ناخواسته‌ای در برنامه ایجاد می‌کند. خطایابی فرایند برطرف کردن باگها است، بدین معنی که خطاها را از برنامه پاک کنیم. قبل از اینکه برنامه را به پایان برسانید لازم است که برنامه‌تان را اشکال زدایی کنید. به صورت کلی سه نوع خطا وجود دارد:

  • خطاهای کامپایلری رایج‌ترین نوع خطا هستند. برای مثال اگر شما نوشتن سمیکالن را فراموش کنید باعث بروز خطای کامپایلری می‌شود.
  • خطاهای منطقی زمانی اتفاق می افتند که یک اشتباهی در منطق برنامه به وجود بیاید. برای مثال در برنامه جمع دو عدد، اگر برنامه نویس به جای به علاوه، منها قرار دهد یک خطای منطقی رخ می‌دهد. تشخیص این نوع خطاها معمولاً کار دشواری است.
  • خطاهای زمان اجرا همانطور که نام آن‌ها پیداست در زمان اجرا اتفاق می افتند. به این نوع خطاها استثنا (Exception) نیز گفته می‌شود. برای مثال شما از کاربر می‌خواهید یک عدد صحیح وارد کند ولی یک عدد اعشاری یا یک رشته وارد می‌کند که باعث بروز خطا می‌شود.

استثناءها دو نوع هستند:

  • همگام (Synchronous)
  • ناهمگام (Asynchronous)

استثناهای همگام آن دسته از استثناها می‌باشند که به دلیل مشکل در کد نوشته شده توسط برنامه نویس رخ می‌دهند و برنامه نویس می‌تواند آن‌ها را مدیریت کند. اما استثناهای ناهمگام آن دسته از استثناها می‌باشند که به دلیل مشکلی خارج از کدهای برنامه رخ می‌دهند. برای مثال اگر با کمبود حافظه در RAM رو به رو شویم خطایی که رخ می‌دهد از نوع ناهمگام است و خطاهای ناهمگام را نمی‌توان مدیریت کرد. در درس های آینده در مورد روش های خطایابی برنامه بیشتر توضیح می دهیم.