X

آموزش مقدماتی C++ | مدیریت خطا ها

مدیریت خطا

هنگام اجرای کد C++‎‎‎ ، ممکن است خطاهایی رخ دهد: خطاهای کد نویسی برنامه نویس، خطا های  ورودی های اشتباه از سمت کاربر، و خطاهای غیر قابل پیشبینی دیگر.

وقتی اروری رخ می دهد، معمولاً C++‎‎‎ یک متن خطا تولید کرده و در خروجی ارسال می کند و برنامه را متوقف می کند. در اصطلاح فنی می گویند یک خطایی را پرتاپ می کند.

try و catch در C++‎‎‎

مدیریت خطا ها در C++‎‎‎ شامل سه دستور است:try, throw و catch:

با استفاده از دستور try می توانیم یک تکه کد را برای دریافت خطا های احتمالی هنگام اجرا تست کنیم.

دستور throw اگر خطایی شناسایی شود، آن را پرتاپ می کند که در نتیجه با استفاده از این دستور می توانیم ارور دلخواه خود را ارسال کنیم

با استفاده از دستور catch می توانیم کدی بنویسیم که در صورت پیدا شدن خطا در بلوک try، این کد اجرا شود

جفت دستورات try و catch با هم استفاده می شوند:

try {
  // Block of code to try
  throw exception;  // Throw an exception when a problem arise
}
catch () {
  // Block of code to handle errors
}

 

مثال زیر را در نظر بگیرید:

try {
  int age = 15;
  if (age > 18) {
     cout << "Access granted - you are old enough.";
  } else {
     throw (age);
  }
}
catch (int  myNum) {
  cout << "Access denied - You must be at least 18 years  old.\n";
  cout << "Age is: " << myNum; 
}

از دستور try استفاده کرده ایم تا این کد را بررسی کنیم: اگر متغیر age کمتر از 18 بود، یک ارور پرتاپ می شود و این ارور در بلوک catch مدیریت می شود.

در بلوک catch، ارور را دریافت کرده و عملیاتی طبق آن انجام می دهیم. در مثال ما، متغیر myNum که یک int است دریافت می شود (چون متغیر age که از بلوک try ارسال شده یک int است). و می توانیم مقدار این متغیر را در خروجی چاپ کنیم.

اگر هیچ اروری رخ ندهد (یعنی age بزرگتر از 18 باشد)، بلوک catch نادیده گرفته می شود:

int age = 20;

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

try {
  int age = 15;
  if (age > 18) {
     cout << "Access granted - you are old enough.";
  } else {
     throw 505;
  }
}
catch (int myNum) {
   cout << "Access denied - You must be at least 18 years old.n";
   cout << "Error number: " << myNum; 
}
پرسش و پاسخ این درس

برای ثبت پرسش ابتدا در سایت وارد شوید.

  • 1
  • 2