یکی از مواردی که برنامهنویسان ++C بخصوص برنامهنویسانی که تازه به این زبان روی آوردهاند با آن مواجه هستند این است که به هنگام کار کردن با کتابخانه iostream نمیتوانند به درستی خطاها (Exception) را پوشش دهند. بطور مثال در کد زیر قصد داریم فایلی که وجود ندارد را باز کنیم و با استفاده از بلاک Try...Catch خطاهای احتمالی را پوشش دهیم:
#include <iostream>
#include <fstream>
using namespace std;
int main() {
ifstream file;
try {
file.open("IceCat.ir");
while (!file.eof()) {
cout << file.get();
}
}
catch (...) {
cout << "Error openning file..." << endl;
return 1;
}
file.close();
return 0;
}
اما با اجرای کد بالا با اینکه از بلاک Try...Catch برای هندل کردن Exceptionهای احتمالی استفاده کردهایم، مشاهده میکنیم که در صورت بوجود آمدن خطا (مانند وجود نداشتن فایل) بطور پی در پی عدد 1- در کنسول چاپ خواهد شد.
در این پست به علت بروز این امر و نحوه حل آن خواهیم پرداخت.