خوش آمدید.
در این ویدیو به نحوه مدیریت استثناهای مختلف به صورت جداگانه خواهیم پرداخت.
بنابراین در مثالی که چند ویدیو پیش داشتیم، از کاربر خواستیم یک عدد وارد کند.
و وقتی کاربر عددی را وارد می‌کند یا از او خواسته می‌شود عددی را در چیزی به نام رشته وارد کند،
ممکن است چیزی اشتباه پیش برود، درست است؟
چندین چیز ممکن است اشتباه شود.
شما می‌توانید استثناهایی که در اینجا دریافت می‌کنید را ببینید.
استثنای آرگومان نال.
استثنای فرمت.
استثنای سرریز.
استثنا.
بنابراین اگر بر روی این متد parse قرار دهید، بسیار جالب است زیرا به شما نشان می‌دهد که چه نوع
استثناهایی ممکن است در آن مورد خاص رخ دهد.
بنابراین برای read line می‌توانید بر روی آن قرار دهید.
می‌توانید ببینید که استثنای I/O را به ما می‌دهد.
بنابراین استثنای ورودی و خروجی.
بنابراین انواع مختلفی از استثناها وجود دارد که می‌توانیم داشته باشیم.
و هر کدام از آن‌ها می‌تواند به طور متفاوتی مدیریت شود.
بنابراین اگر فرض کنید یک استثنای آرگومان دارید، سپس می‌خواهید A را انجام دهید.
اما اگر فرض کنید یک استثنای تقسیم بر صفر دارید، می‌توانید B را انجام دهید.
بنابراین بیایید نگاهی بیندازیم که چگونه می‌توانیم استثناهای مختلف را مدیریت کنیم.
بنابراین ما این استثنای پیش‌فرض داریم که به آن استثنا می‌گویند.
اما سپس استثنا یک کلاس است.
و کلاس‌ها می‌توانند کلاس‌های دیگری داشته باشند که از یک کلاس ارث‌بری می‌کنند.
بنابراین ما در مورد ارث‌بری به طور عمیق در فصل بعدی یا شاید فصل بعدی خواهیم دید.
اما فعلاً بیایید به استثنای تقسیم بر صفر بپردازیم.
بنابراین ما در اینجا استثنای فرمت، استثنای سرریز، استثنای آرگومان نال را می‌بینیم.
در واقع این محاسبه می‌تواند استثنای تقسیم بر صفر را به ما بدهد.
بنابراین می‌توانم آن را با گفتن استثنای تقسیم بر صفر بگیرم.
و به آن یک نام می‌دهم، مثلاً x.
و سپس می‌توانم فقط بگویم که اگر آن استثنا خاص رخ دهد، چه باید اتفاق بیفتد.
بنابراین اگر این اتفاق بیفتد، خوب، من فقط می‌گویم Console.WriteLine.
و سپس پیام خطا.
بنابراین x.message.
بنابراین من می‌توانم به وضوح بگویم که "تقسیم بر صفر نکنید:" یا "تقسیم بر صفر نکنید!!".
و سپس هر چه پیام استثنا باشد.
بنابراین بیایید این را سریع اجرا کنیم تا ببینیم.
بنابراین بگذارید بر صفر تقسیم کنم و می‌بینید که "تقسیم بر صفر نکنید".
و سپس می‌گوید "تلاش برای تقسیم بر صفر".
بنابراین حالا استثنای ما را به طور متفاوتی مدیریت کرد.
حالا بیایید دوباره آن را اجرا کنیم.
اما این بار ما استثنای تقسیم بر صفر را ایجاد نخواهیم کرد.
ما یک استثنای دیگر ایجاد خواهیم کرد که عدد نیست بلکه یک حرف واقعی است.
خوب.
بنابراین می‌گوید خطا.
رشته ورودی F در فرمت صحیح نبود.
بنابراین در عوض، می‌توانیم آن استثنا را نیز بگیریم.
بنابراین آن استثنایی که در آنجا داشتیم چه بود؟
من فکر می‌کنم که این استثنای فرمت بود، خوب.
بنابراین اگر می‌خواهید بدانید که کدام استثنا بود، می‌توانید در این مرحله جزئیات بیشتری در مورد استثنا بدهید.
بنابراین به جای فقط نمایش پیام، می‌توانید بگویید toString، خوب.
بنابراین می‌توانید استثنا را به یک رشته تبدیل کنید و سپس بیشتر در مورد آن بدانید.
بنابراین اینجا من از استثنای فرمت استفاده می‌کنم و آن را x می‌نامم.
حالا می‌توانید هر بار نام متفاوتی به آن بدهید.
می‌توانید هر طور که می‌خواهید آن را نام‌گذاری کنید.
اما در نهایت این فقط یک متغیر محلی بسیار کوچک است که فقط در داخل این بلوک catch قابل استفاده خواهد بود.
بنابراین حالا می‌خواهم همان کار را انجام دهم و بگویم، به شما گفتم که یک عدد وارد کنید و سپس
می‌توانیم پیام را نیز در اینجا x.message اضافه کنیم.
بنابراین حالا بیایید دوباره آن را اجرا کنیم و ببینیم اگر اینجا F را وارد کنیم.
به شما گفتم که یک عدد وارد کنید.
رشته ورودی f در فرمت صحیح نبود.
بنابراین می‌بینید که اکنون می‌توانید هر استثنا را به طور متفاوتی مدیریت کنید.
و می‌توانید بگویید که بسته به استثنا باید چیز متفاوتی اتفاق بیفتد.
حالا در مورد من، من آن را ساده نگه می‌دارم.
فقط چیزی را بر روی کنسول می‌نویسم.
حالا، به وضوح می‌توانید آن را به طور متفاوتی مدیریت کنید و کد دیگری را در چنین حالتی اجرا کنید.
بنابراین اگر به عنوان مثال، کسی بر صفر تقسیم کند، می‌توانید بگویید، خوب، می‌دانید چه، من فقط
نتیجه را به یک مقدار پیش‌فرض، به عنوان مثال، تنظیم می‌کنم.
بنابراین اینجا می‌توانم فقط بگویم که علاوه بر آن، نتیجه برابر با ده است، خوب.
بنابراین اگر بر صفر تقسیم کنیم، من فقط نتیجه را به ده می‌گذارم.
بنابراین خطا ظاهر شد.
و می‌توانید ببینید که نتیجه ده است.
بنابراین این فقط یک مثال از آنچه می‌توانید انجام دهید.
حالا به وضوح این همه بستگی به مورد استفاده شما دارد.
بنابراین بیایید به یک استثنای دیگر که می‌توانیم داشته باشیم نگاهی بیندازیم.
بنابراین هر زمان که با اعداد صحیح کار می‌کنیم، می‌توانیم یک عدد صحیح بسیار بزرگ بسازیم.
بنابراین بیایید ببینیم.
بنابراین بیایید واقعاً ببینیم که این چگونه نامیده می‌شود، راستش را بخواهید، مطمئن نیستم.
بنابراین بیایید آن را به عنوان toString در اینجا قرار دهیم.
بنابراین بیایید آن را به یک رشته تبدیل کنیم.
با استفاده از پرانتزها در انتها.
در غیر این صورت این کار نمی‌کند.
حالا بگذارید یک عدد بسیار بزرگ وارد کنم که در یک INT جا نمی‌شود و می‌گوید استثنای سرریز همانطور که انتظار داشتم.
خوب.
بنابراین استثنایی که ایجاد کردیم، یک استثنای سرریز بود.
بنابراین عدد صحیح فقط مقدار معینی فضا دارد.
و حالا سرریز می‌شود.
به طور کلی می‌توانید بگویید که این مانند یک سطل است که فقط می‌تواند مقدار معینی از اعداد را در خود جای دهد.
اما اگر بیشتر از آن وارد کنید، سطل سرریز می‌شود.
بنابراین این چیزی است که ما در اینجا به دست می‌آوریم.
بنابراین بیایید از این استثنای سرریز استفاده کنیم.
می‌توانید ببینید که این زیر system.overflow exception است.
بنابراین می‌توانیم دقیقاً از آن استفاده کنیم.
می‌توانیم آن استثنا را به طور جداگانه بگیریم.
و به آن می‌گوییم استثنای سرریز.
و اینجا می‌گوییم عدد خیلی بزرگ است، خوب.
بنابراین بیایید دوباره آن را اجرا کنیم.
این بار من اصلاً خطا را نشان نمی‌دهم، فقط می‌گویم عدد خیلی بزرگ است.
و حالا بگذارید یک عدد بسیار بزرگ وارد کنم.
و می‌گوید عدد خیلی بزرگ است.
اینجا هستیم.
بنابراین این اکنون به شما ایده کلی می‌دهد که چگونه می‌توانید انواع مختلف استثناها را مدیریت کنید.
حالا می‌توانید اول از همه آن‌ها را با استفاده از استثنای پیش‌فرض مجبور کنید.
این سپس جزئیاتی در مورد نام استثنا به شما می‌دهد.
و سپس می‌توانید آن استثنای خاصی که رخ داده است را بگیرید.
گاهی اوقات شما نمی‌توانید همه انواع مختلف استثناها را مدیریت کنید، به همین دلیل است که هنوز
داشتن این استثنا، این استثنای پیش‌فرض در آنجا بسیار مفید است.
خوب.
بنابراین این برای این ویدیو کافی است.
در ویدیوی بعدی می‌خواهم به شما نشان دهم که اگر این کد را به برنامه خود اضافه نکنید، چه اتفاقی می‌افتد.
پس در ویدیوی بعدی می‌بینیم. ```