یک برنامه در زبان سی شارپ ممکن است در زمان اجرا دچار خطا شود. در این صورت یک Exception توسط سی شارپ ایجاد میشود که نشان دهنده ی خطای مورد نظر و اطلاعاتی در مورد آن است. در این فصل با استثناها در سی شارپ آشنا میشوید.
Exception
یک برنامه ممکن است در زمان اجرا با خطا مواجه شود. وقتی خطایی رخ میدهد برنامه یک Exception
را ایجاد می کند که شامل اطلاعات ضروری در مورد خطایی است که رخ داده است. در دات نت دو نوع Exception وجود دارد :
- Exceptionهایی که توسط برنامه اجرایی تولید میشود.
- Exceptionهایی که توسط CLR تولید میشوند.
سی شارپ برای هر Exception احتمالی دارای کلاسهای درونی است همه کلاس های مربوط به خطا از کلاس Exception مشتق شدهاند.
دو نوع کلاس اصلی برای استثناها(exception) وجود دارد : SystemException
و ApplicationException
.
کلاس SystemException به عنوان کلاس پایه برای Exceptionهایی است که توسط CLR تولید میشود و ApplicationException به عنوان کلاس پایه برای استثناهای مرتبط با برنامه اجرایی استفاده میشود. ساختار درختی کلاس های exception در سی شارپ به شکل زیر است :
همانطور که در مثال بالا مشاهده می کنید کلاس SystemException به عنوان کلاس پایه برای همه استثناهایی است که ممکن است در طول برنامه رخ دهند. به صورت پیش فرض از کلاس ApplicationException کلاس دیگری مشتق نمی شود و شما به عنوان برنامه نویس باید کلاس دلخواه خود را ایجاد کرده و از ApplicationException به عنوان کلاس پایه برای آن استفاده کنید.
شکل زیر نشان می دهد که چطور یک استثنا در حالت دیباگ ویژوال استادیو رخ داده است. علت این رخداد دسترسی به یک پروپرتی از شی ایی بوده است که دارای مقدار null است :
بعضی از کلاس های Exception مهم در زیر لیست شده است :
ArgumentException
ArgumentNullException
ArgumentOutOfRangeException
DivideByZeroException
FileNotFoundException
FormatException
IndexOutOfRangeException
NullReferenceException
OverflowException
StackOverflowException
هر کلاس استثنا در دات نت از کلاس پایه Exception ارث بری می کند که شامل مشخصه های مهمی بوده که با استفاده از آنها می توان اطلاعات مفیدی در مورد رخداد استثنا به دست آورد. بعضی از آن مشخصه ها عبارت اند از :
- Message : فراهم آوردن اطلاعاتی در مورد دلیل رخداد استثنا.
- StackTrace : فراهم آوردن اطلاعاتی در مورد مکانی که استثنا رخ داده است.
- InnerException : فراهم آوردن اطلاعاتی در مورد مجموعه ای از استثناها که ممکن است رخ داده باشند.