آموزش C

مباحث پایه زبان C

مدیریت خطا در زبان C – آموزش زبان C

  • چهارشنبه ۲ آبان ۱۳۹۷
  • بازدید ۳,۹۹۷ نفر

تصویر c-error-handling_4165 مدیریت خطا در زبان C - آموزش زبان C

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

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

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

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

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

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

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

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

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

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

در مثال زیر نحوه بررسی این موضوع نشان داده شده است:

امتحان کنید

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

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

یک عمل رایج در هنگامی که برنامه با موفقیت کارش را انجام داده است، بازگشت دادن مقدار EXIT_SUCCESS است. این یک ماکرو است که با مقدار 0 تنظیم شده است. اما زمانی که برنامه شما در انجام کارش دوچار مشکل می شود، مقدار بازگشتی رایج EXIT_FAILURE است. مقدار این ماکرو -1 می باشد.

امتحان کنید

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

 

باکس دانلود
ثبت نظر
ریفریش کنید!
نظرات کاربران (۱ مورد)
  1. تصویر آواتار کاربر 0
    pouya شنبه , 16 مهر

    با عرض سلام خسته نباشید.من وقتی وارد برنامه ++dev-cمشم و کدهارو مینویسم بعد از برای compiler این erorرو میده لطفا راهنمایی کنید.با تشکر C:\Users\ZAITOON.iR\Desktop\مبانی کامپیوتر\g++.exe [Error] C:\Users\ZAITOON.iR\Desktop\????? ????????\bar1.cpp: Invalid argument