دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۲۵
  • اسفند

جلسه ۲۵ : مدیریت خطا در زبان C

  • دسته‌بندی‌ها :
جلسه ۲۵ : مدیریت خطا در زبان C
    • جزئیات
    • نوع محتواآموزشی

      مقدمه

      با سلام خدمت تمامی دوستان عزیز سایت پی وی لرن .و کاربرانی که دوره کامل آموزش زبان C را دنبال می کنند. و کاربرانی که با سری آموزش های زبان C همراهمون هستند. تبدیل نوع در زبان C و انواعش ،Integer Promotion و تبدیلات ریاضی رایج در C رو جلسه قبل داشتیم .در این جلسه خطا و مدیریت خطا در زبان C از جمله خطای تقسیم بر صفر در C و وضعیت خروج برنامه رو بیان خواهیم کرد .

      مدیریت خطا در زبان C

      زبان C به طور مستقیم از مدیریت خطا (Error Handling) پشتیبانی نمی کند. اما در  سطح پایین تر شما می توانید با استفاده از مقادیر بازگشتی توابع خطاها را مدیریت کنید. اکثر توابع موجود در C در صورت بوجود آمدن خطا مقدار یا NULL را باز میگردانند و شماره خطا را در متغیر errno تنظیم می کند.  این یک متغیر عمومی یا جهانی است که نشان دهنده بوجود آمدن خطا در هنگام فراخوانی یک تابع است. شما می توانید شماره خطاهای (error code) مختلفی که header <error.h> تعریف شده است را پیدا کنید.

      بنابراین یک برنامه نویس C می تواند با بررسی مقادیر بازگشتی، خطاهای بوجود آمده را کنترل کند. بهتر است در ابتدا برنامه مقدار متغیر errno را ۰ تنظیم کنید. مقدار ۰ نشان دهنده این است که هیچ خطایی در برنامه رخ نداده است.

      متغیر errno و توابع perror() و strerror()

      زبان برنامه نویسی C توابع perror() و strerror() را در اختیار ما قرار می دهد تا با استفاده از آن ها متن خطاها براساس شماره آن ها چاپ کنیم.

      • تابع perror() رشته ای را که به آن داده می شود را چاپ می کند و سپس یک کولون، یک فضای خالی و در آخر هم متن مربوط به خطا را نمایش می دهد.
      • تابع strerror() بر اساس شماره خطای رخ داده، یک اشاره گر به متن خطا (یک رشته) باز می گرداند.

      بیایید سعی کنیم یک وضعیت خطا را شبیه سازی کنیم و سعی کنیم فایلی را که وجود ندارد باز کنیم. در اینجا ما از هر دو تابع استفاده می کنم، اما شما می توانید از یک یا چند روش برای چاپ خطاها استفاده کنید. دومین نکته مهم این است که شما باید جریان فایل stderr را برای خروجی تمام خطاها استفاده کنید.

      مثال : 

      زمانی که کد بالا کامپایل و اجرا شود، نتیجه زیر را تولید خواهد کرد:

      مثال : 

      خطای تقسیم بر صفر در C

      این یک مشکل رایج است که در زمان تقسیم هر عدد، برنامه نویسان بررسی نمی کنند که مخرج کسر صفر نباشد و در نهایت یک خطای زمان اجرا ایجاد می کند.

      کد زیر این را با چک کردن اینکه آیا مخرج قبل از تقسیم برابر صفر است را نشان می دهد:

      مثال : 

      زمانی که کد بالا کامپایل و اجرا شود، نتیجه زیر را تولید خواهد کرد:

      مثال : 

      وضعیت خروج برنامه

      یک روش معمول بازگشت دادن مقدار EXIT_SUCCESS است در صورتی که برنامه با موفقیت انجام شده باشد . در اینجا EXIT_SUCCESS یک ماکرو است و به عنوان ۰ تعریف شده است.

      اگر وضعیت خطا در برنامه بوجود آید ،مقدار بازگشتی EXIT_FAILURE است که به عنوان ۱- تعریف شده است.

      اجازه دهید برنامه فوق را به صورت زیر بنویسیم:

      مثال : 

      اجازه دهید برنامه فوق را به صورت زیر بنویسیم:

      مثال : 

      کلام پایانی

      اینم از خطا و مدیریت خطا در زبان C و خطای تقسیم بر صفر در C ، در ادامه با توابع بازگشتی در زبان C خدمتتون خواهیم رسید.

      QR:  جلسه ۲۵ : مدیریت خطا در زبان C
      به اشتراک بگذارید