C++ Exceptions

در C++، Exceptions (استثناها یا خطاهای زمان اجرا) مکانیزمی هستند که به ما اجازه می‌دهند خطاها را کنترل و مدیریت کنیم بدون اینکه برنامه فوراً خراب شود.

🔹 1️⃣ ساختار کلی Exception Handling

برای مدیریت استثناها از سه کلیدواژه اصلی استفاده می‌کنیم:

کلمه کلیدیتوضیح
tryبخشی از کد که ممکن است خطا ایجاد شود
throwپرتاب یک استثنا
catchگرفتن و پردازش استثنا

ساختار پایه

try { // کدی که ممکن است خطا ایجاد کند } catch (نوع_استثنا متغیر) { // کد مدیریت خطا }

🔹 2️⃣ مثال ساده

#include <iostream> using namespace std; int main() { int a = 10, b = 0; try { if (b == 0) { throw "Division by zero!"; // پرتاب استثنا } cout << a / b << endl; } catch (const char* msg) { // گرفتن استثنا cout << "Error: " << msg << endl; } cout << "Program continues..." << endl; return 0; }

📌 خروجی:

Error: Division by zero! Program continues...

بدون Exception Handling برنامه کرش می‌کرد.

🔹 3️⃣ پرتاب و گرفتن انواع مختلف

می‌توانیم هر نوع داده‌ای را پرتاب کنیم:

try { throw 100; // int } catch (int e) { cout << "Caught int: " << e << endl; } try { throw 3.14; // double } catch (double e) { cout << "Caught double: " << e << endl; }

🔹 4️⃣ چند Catch

می‌توانیم چند catch برای انواع مختلف داشته باشیم:

try { throw 'A'; } catch (int e) { cout << "Caught int" << endl; } catch (char e) { cout << "Caught char: " << e << endl; } catch (...) { // گرفتن هر نوع استثنا cout << "Caught unknown exception" << endl; }

🔹 5️⃣ Exception در توابع

توابع می‌توانند Exception را پرتاب کنند و در محل فراخوانی گرفته شود.

#include <iostream> using namespace std; void divide(int a, int b) { if (b == 0) throw "Division by zero!"; cout << a / b << endl; } int main() { try { divide(10, 0); } catch (const char* msg) { cout << "Error: " << msg << endl; } return 0; }

🔹 6️⃣ نکات کلیدی

  • Exception باعث اجرای امن برنامه می‌شود و از Crash جلوگیری می‌کند.

  • از throw برای پرتاب و از catch برای گرفتن و پردازش خطا استفاده می‌کنیم.

  • می‌توان چند نوع exception داشت و با چند catch مدیریت کرد.

  • برای گرفتن هر نوع ناشناخته از (...)catch استفاده می‌کنیم.

  • در توابع بزرگ و کتابخانه‌ها، Exception Handling امنیت و انعطاف بیشتری به برنامه می‌دهد.

💡 خلاصه:
Exception در C++ مکانیزمی استاندارد برای مدیریت خطاهای زمان اجرا است، که به شما اجازه می‌دهد خطاها را پرتاب کنید و به شکل کنترل‌شده آنها را مدیریت کنید تا برنامه همچنان به کار خود ادامه دهد.