تبلیغات
banner
banner
banner
تبلیغات
banner

فیلم های آموزشی : 36 +

تعداد کاربران : 44 +

تعداد کل مطالب : 338 +

تعداد نظرات : 33 +

حضرت محمد (ص) : طلب علم بر هر انسانی واجب است ،همانا خداوند علم آموزان را دوست دارد.

آموزش مقدماتی تا پیشرفته سی شارپ بخش صد و پنجاه و هفتم


 به نام خداوند جان آفرین حکیم سخن در زبان آفرین



آموزش مقدماتی تا پیشرفته سی شارپ بخش صد و پنجاه و هفتم

سلام به همه کاربران وب‌سایت لندلرن

قسمت صد و صد و پنجاه و هفتم


دستور throw:

همانطور كه گفتم براي اعلام رخ دادن يك استثنا در برنامه بايد شيئ اي را از نوع Exception ايجـاد كـرده و آن را پرتـاب كنيد.

براي پرتاب شيئ ايجاد شده مي توانيد از دستور throw استفاده كنيد .

در بخش امتحان كنيد بعـد، يـك كـلاس آزمايـشي ايجاد كرده و در يكي از متدهاي اين كلاس با استفاده از اين دستور اعلام خواهيم كرد كه يك استثنا رخ داده است .

همچنين در اين برنامه مشاهده خواهيد كرد كه اگر براي يك استثناي به وجود آمده هيچ بلاك catch اي يافت نشود، چه اتفاقي رخ خواهد داد .

امتحان كنيد: استفاده از دستور throw:

  • یک پروژه کنسولی جدید با نـام ThrowCommand ايجـاد كنيد .
  • در فايل Program.cs ،از كلاس Program كلاس جديدي به نام Tester ايجـاد كـرده
  • و كـد زيـر را درون اين كلاس قرار دهيد.
  • در كلاس Program به قسمت مربوط به متد Main برويد
  • و كد مشخص شـده در زيـر را بـه بدنـه ي ايـن متـد اضافه كنيد.
  • حال برنامه را اجرا كنيد .
  • مشاهده مي كنيد پنجره اي نمايش داده مي شود .
  • ايـن پنجـره را قـبلاً نيـز هنگامي كه در حال كار با پروژه ي ErrorHandling بوديد مشاهده كرده ايد.
  • اما ايـن مرتبـه اطلاعـات درون اين كادر بر اساس استثنايي است كه با استفاده از دستور throw ايجاد كرده ايم.
  • با انتخاب گزينه ي   Debug – Stop Debugging از نوار منوي ويژوال استوديو برنامه را ببنديد.

چگونه كار مي كند؟

همانطور كه مشاهده مي كنيد در اين برنامه هيچ كار خاصي انجام نمي شود، فقط چند تابع فراخواني مي شوند و وارد و خارج شدن از تابع در خروجي نوشته مي شود .

در ابتدا برنامه يك شيئ از كلاس Tester ايجاد كرده و متد Run را از ايـن شـيئ فراخـواني مي كند .

متد Run بعد از نوشتن عبارتي در خروجي متـد Func1 را فراخـواني كـرده و متـد Func1 نيـز متـد Func2 را فراخواني مي كند .

درون متد Func2 ،با استفاده از دستور new يك شـيئ جديـد از كـلاس System.Exception ايجاد كرده و سپس با استفاده از دستور throw آن را پرتاب مي كنيم.

با اين كار برنامه بلافاصله درون متد Func2 به دنبال يك بلاك catch مي گردد تا بتواند اين خطا را كنترل كند.

امـا هـيچ بلاكي را پيدا نمي كند.

بنابراين به سراغ م تد Func1 كه احضار كننده ي متد Func2 محسوب مي شود خواهد رفت.

در اين متد هم هيچ بلاك catch اي يافت نمي شود.

به همـين ترتيـب متـد هـاي Run و Main نيـز بـراي يـافتن يـك بـلاك catch مناسب بررسي مي شوند.

اما همانطور كه در كد هم مشاهده مي كنيد، چنين بلاكـي يافـت نمـي شـود.

بنـابراين CLR اجراي برنامه را به حالت تعليق در آورده و پيغام خطاي پيش فرض را همانندنمايش مي دهد.

 

نكته:

در اينجا به علت اينكه برنامه به وسيله ي ويژوال استوديو اجرا شده است چنين پيغام خطـايي نمـايش داده شـده

اگر فايل اجرايي اين برنامه را بدون اسـتفاده از ويـژوال اسـتوديو اجرا كنيد، پيغامي دیگر مشاهده خواهيد كرد .

براي دسترسي به فايل اجرايي برنامـه بـه فولـدري كـه برنامـه را در آن ايجاد كرده ايد برويد،

فايل اجرايي برنامه در فولدر bin\Debug قرار دارد.

همچنين مشاهده مي كنيد كه محتويات اين صفحه به زيان فارسي نمايش داده شده اند .

در اينجا به علت اينكه هيچ حالت خاصي براي اعلام يك استثنا رخ نداده است

(نه ارتباط شبكه اي قطع شده است، نه تقسيم بر صفر صورت گرفته است و نه …)

صرفا يك شيئ از كلاس Exception را ايجاد كرده و پرتاب مي كنيم.

اما در برنامه هاي واقعـي بهتر است با بررسي علت استثنا، از يكي از كلاسهاي ديگر NET . اسـتفاده كنـيم.
و يـا كلاس مخصوصي را طراحي كنيم تا بهتر مشخص شود كه علت به وجود آمدن خطا چه بوده است .

استفاده از اين روش مزاياي ديگري را شامل مي شود كه بعد از آشنايي با بلاك هـاي try و catch ،بـه اهميـت آن میرسید.

با ادامه دوره در قسمت صد و پنجاه و هشتم همراه ما باشید


درباره نویسنده
سجاد اسدی
   سجاد اسدی

سجاد اسدی هستم دانشجوی رشته نرم افزار و علاقه مند به تدریس و یادگیری دروس مرتبط با تکنولوژی نرم افزار و اینترنت اشیاء جهت ارتباط با بنده مراجعه شود به آیدی سروش و تلگرام : @ordervira و پیج بنده در اینستاگرام instagram.com/sajjadred11 ""اللهم صل علی محمد و آل محمد"" برای شروع هیچ وقت دیر نیست. "الهم عجل لولیک الفرج"

دیدگاه بگذارید

avatar
  اشتراک  
اطلاع رسانی

aparat کانال آپارات

soroush کانال سروش

کانال آی گپ