۲۹ - ۱استثناها

باید قبول کرد: در اجرا ِ یه برنامه، خیلی چیزها ممکنه درست پیش نرن. در اون لحظاتِ ناخوشایند که اتفاقاتِ نامطلوبی میوفتن، یه استثنا میندازیم (یا عَلَم می‌کنیم). لغتِ استثنا، به شرط یا وضعیتی اشاره داره که اجرا ِ موردِ انتظار ِ برنامه رو مختل می‌کنه. وقتی یه استثنا اتفاق میوفته، یک پیغامِ خطا (یا پیغامِ استثنا) ظاهر میشه و میگه به خاطر یه شرطی که آمادگی‌ش رو نداشتین، اجرا ِ برنامه متوقف شده.

در فصل‌های قبل، راه‌های صریحی برای مدیریت ِ شرایطِ بخصوصی که باعث خطا میشن رو با استفاده از تایپ‌های ‏‎Maybe‎‏، ‏‎Either‎‏، و ‏‎Validation‎‏ توضیح دادیم. اما مدیریت ِ شرایطِ استثنا به واسطه‌ی این نوع‌داده‌ها، همیشه بهترین کار نیست. در بعضی موارد، حذفِ بررسی‌های مکرر برای یه وضعیتِ نامطلوب، می‌تونه استثناها رو سریع‌تر کنه. استثناها، جزء صریحی از واسط‌های تعاملی که استفاده می‌کنین نیستن، و همین مسئله استدلالِ حالت‌هایی که ممکنه باعث شکست خوردن ِ برنامه‌تون بشن رو پیچیده‌تر می‌کنه.

اگه اجازه بدیم استثناها هرطور که دل‌شون می‌خواد عَلَم بشن – و همینطور برنامه رو متوقف کنن – خیلی ایده‌آل عمل نکردیم. مدیریتِ استثنا راهی برای تقابل با خطاها، و تأمینِ مسیرهای جایگزین (اگه یه وقت استثنا ای عَلَم بشه) برای اجرا یا خاتمه ِ برنامه‌هاست. این فصل استثناها و راه‌های مختلف برای مدیریت ِشون رو توضیح میده.

در این فصل:

  • تایپکلاسِ ‏‎Exception‎‏ و متودهاش رو بررسی می‌کنیم؛

  • یه کوچولو با سورِ وجودی آشنا میشیم؛

  • راجع به راه‌های مدیریت ِ استثناها صحبت می‌کنیم.