🎁 تخفیف ویژه تمامی دوره های آموزشی 🎁

کلمه کلیدی throw در سی شارپ

در این بخش، نحوه ایجاد یک استثنا به صورت دستی (manually) با استفاده از کلمه کلیدی throw توضیح داده می شود.

کلمه کلیدی throw در سی شارپ

کلمه کلیدی throw در سی شارپ

در بخش قبلی نحوه کنترل و رسیدگی به استثناهایی را که به طور خودکار توسط CLR ایجاد می شوند، دیدیم. در این بخش، نحوه ایجاد یک استثنا را به صورت دستی (manually) خواهیم دید.

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

کلمه کلیدی throw در سی شارپ

خروجی قطعه کد بالا عبارت است از:

کلمه کلیدی throw در سی شارپ

در مثال بالا، اگر شی Student برابر با null باشد، متد ()PrintStudentName باعث رخداد استثنای NullReferenceException می شود.

توجه داشته باشید که throw با استفاده از کلمه کلیدی new یک شی از هر نوع استثنای معتبری ایجاد می کند. کلمه کلیدی throw را نمی توان با هر نوع دیگری که از کلاس Exception مشتق نشده است استفاده کرد.

Re-throwing an Exception

همچنین می توانید یک استثنا را از بلوک catch دوباره throw کنید تا به فراخوانی کننده منتقل شود و به فراخوانی کننده اجازه دهید آن طور که می خواهد آن را مدیریت کند. مثال زیر یک استثنا را re-throw می کند.

Re-throwing an Exception in C#

خروجی قطعه کد بالا عبارت است از:

Re-throwing an Exception in C#

در مثال بالا، یک استثنا در ()Method2 رخ می دهد. بلوک catch به سادگی باعث رخداد آن استثنا با استفاده از کلمه کلیدی throw می شود. این کنترل در بلوک catch در ()Method1 انجام می شود، جایی که دوباره همان استثنا را re-throw می کند و در نهایت در متد ()Main مدیریت می شود. ردیابی پشته ای (stack trace) این استثنا به شما جزئیات کاملی را می دهد که دقیقاً کجا این استثنا رخ داده است.

اگر یک استثنا را دوباره با استفاده از پارامتر استثنا re-throw کنید، استثنا اصلی را حفظ نمی کند و یک استثنا جدید ایجاد می کند. مثال زیر این مطلب را نشان می دهد.

ایجاد خطا و استثنا به صورت دستی در سی سارپ

خروجی قطعه کد بالا عبارت است از:

ایجاد خطا و استثنا به صورت دستی در سی سارپ

در مثال بالا، استثنایی که در متد ()Main گرفتار شده است، ردیابی پشته ای را از Method1 و متد Main نمایش می دهد. Method1 را در ردیابی پشته ای نمایش نمی دهد زیرا ما استثنا را در ()Method1 با استفاده از throw ex دوباره ایجاد می کنیم. بنابراین، هرگز با استفاده از <throw <exception parameter استثناء را throw نکنید.

نحوه ایجاد نوع استثنای سفارشی (custom exception) در بخش بعدی آموزش داده می شود.

کلمه کلیدی throw Exception Re-throwing an Exception آموزش سی شارپ

مقالات این دسته بندی