
WEBVTT

00:00.110 --> 00:00.860
خوش آمدید.

00:00.860 --> 00:07.820
در این ویدیو به نحوه مدیریت استثناهای مختلف به صورت جداگانه خواهیم پرداخت.

00:07.820 --> 00:13.370
بنابراین در مثالی که چند ویدیو پیش داشتیم، از کاربر خواستیم یک عدد وارد کند.

00:13.370 --> 00:20.180
و وقتی کاربر عددی را وارد می‌کند یا از او خواسته می‌شود عددی را در چیزی به نام رشته وارد کند،

00:20.180 --> 00:22.280
ممکن است چیزی اشتباه پیش برود، درست است؟

00:22.280 --> 00:23.360
چندین چیز ممکن است اشتباه شود.

00:23.360 --> 00:25.010
شما می‌توانید استثناهایی که در اینجا دریافت می‌کنید را ببینید.

00:25.010 --> 00:26.150
استثنای آرگومان نال.

00:26.150 --> 00:27.110
استثنای فرمت.

00:27.110 --> 00:27.560
استثنای سرریز.

00:27.560 --> 00:28.100
استثنا.

00:28.100 --> 00:32.840
بنابراین اگر بر روی این متد parse قرار دهید، بسیار جالب است زیرا به شما نشان می‌دهد که چه نوع

00:32.840 --> 00:35.600
استثناهایی ممکن است در آن مورد خاص رخ دهد.

00:35.600 --> 00:38.330
بنابراین برای read line می‌توانید بر روی آن قرار دهید.

00:38.330 --> 00:40.460
می‌توانید ببینید که استثنای I/O را به ما می‌دهد.

00:40.460 --> 00:42.410
بنابراین استثنای ورودی و خروجی.

00:42.410 --> 00:46.970
بنابراین انواع مختلفی از استثناها وجود دارد که می‌توانیم داشته باشیم.

00:46.970 --> 00:50.150
و هر کدام از آن‌ها می‌تواند به طور متفاوتی مدیریت شود.

00:50.150 --> 00:55.730
بنابراین اگر فرض کنید یک استثنای آرگومان دارید، سپس می‌خواهید A را انجام دهید.

00:55.730 --> 00:59.960
اما اگر فرض کنید یک استثنای تقسیم بر صفر دارید، می‌توانید B را انجام دهید.

00:59.960 --> 01:03.980
بنابراین بیایید نگاهی بیندازیم که چگونه می‌توانیم استثناهای مختلف را مدیریت کنیم.

01:03.980 --> 01:08.420
بنابراین ما این استثنای پیش‌فرض داریم که به آن استثنا می‌گویند.

01:08.420 --> 01:11.120
اما سپس استثنا یک کلاس است.

01:11.120 --> 01:17.000
و کلاس‌ها می‌توانند کلاس‌های دیگری داشته باشند که از یک کلاس ارث‌بری می‌کنند.

01:17.000 --> 01:22.460
بنابراین ما در مورد ارث‌بری به طور عمیق در فصل بعدی یا شاید فصل بعدی خواهیم دید.

01:22.460 --> 01:23.180
اما فعلاً بیایید به استثنای تقسیم بر صفر بپردازیم.

01:23.180 --> 01:27.590
بنابراین ما در اینجا استثنای فرمت، استثنای سرریز، استثنای آرگومان نال را می‌بینیم.

01:27.590 --> 01:31.610
در واقع این محاسبه می‌تواند استثنای تقسیم بر صفر را به ما بدهد.

01:31.610 --> 01:37.670
بنابراین می‌توانم آن را با گفتن استثنای تقسیم بر صفر بگیرم.

01:37.670 --> 01:41.960
و به آن یک نام می‌دهم، مثلاً x.

01:41.960 --> 01:44.780
و سپس می‌توانم فقط بگویم که اگر آن استثنا خاص رخ دهد، چه باید اتفاق بیفتد.

01:44.780 --> 01:49.460
بنابراین اگر این اتفاق بیفتد، خوب، من فقط می‌گویم Console.WriteLine.

01:49.460 --> 01:55.880
و سپس پیام خطا.

01:55.880 --> 01:58.580
بنابراین x.message.

01:58.580 --> 02:08.540
بنابراین من می‌توانم به وضوح بگویم که "تقسیم بر صفر نکنید:" یا "تقسیم بر صفر نکنید!!".

02:08.540 --> 02:12.260
و سپس هر چه پیام استثنا باشد.

02:12.260 --> 02:14.480
بنابراین بیایید این را سریع اجرا کنیم تا ببینیم.

02:14.480 --> 02:19.160
بنابراین بگذارید بر صفر تقسیم کنم و می‌بینید که "تقسیم بر صفر نکنید".

02:19.160 --> 02:21.710
و سپس می‌گوید "تلاش برای تقسیم بر صفر".

02:21.710 --> 02:24.710
بنابراین حالا استثنای ما را به طور متفاوتی مدیریت کرد.

02:24.710 --> 02:25.790
حالا بیایید دوباره آن را اجرا کنیم.

02:25.790 --> 02:30.290
اما این بار ما استثنای تقسیم بر صفر را ایجاد نخواهیم کرد.

02:30.290 --> 02:37.100
ما یک استثنای دیگر ایجاد خواهیم کرد که عدد نیست بلکه یک حرف واقعی است.

02:37.100 --> 02:37.400
خوب.

02:37.400 --> 02:38.390
بنابراین می‌گوید خطا.

02:38.420 --> 02:41.240
رشته ورودی F در فرمت صحیح نبود.

02:41.240 --> 02:46.550
بنابراین در عوض، می‌توانیم آن استثنا را نیز بگیریم.

02:46.550 --> 02:49.400
بنابراین آن استثنایی که در آنجا داشتیم چه بود؟

02:49.400 --> 02:52.820
من فکر می‌کنم که این استثنای فرمت بود، خوب.

02:52.820 --> 02:58.970
بنابراین اگر می‌خواهید بدانید که کدام استثنا بود، می‌توانید در این مرحله جزئیات بیشتری در مورد استثنا بدهید.

02:58.970 --> 02:59.270
بنابراین به جای فقط نمایش پیام، می‌توانید بگویید toString، خوب.

03:04.370 --> 03:09.380
بنابراین می‌توانید استثنا را به یک رشته تبدیل کنید و سپس بیشتر در مورد آن بدانید.

03:09.380 --> 03:13.850
بنابراین اینجا من از استثنای فرمت استفاده می‌کنم و آن را x می‌نامم.

03:13.850 --> 03:16.790
حالا می‌توانید هر بار نام متفاوتی به آن بدهید.

03:16.790 --> 03:18.020
می‌توانید هر طور که می‌خواهید آن را نام‌گذاری کنید.

03:18.020 --> 03:23.990
اما در نهایت این فقط یک متغیر محلی بسیار کوچک است که فقط در داخل این بلوک catch قابل استفاده خواهد بود.

03:23.990 --> 03:24.500
بنابراین حالا می‌خواهم همان کار را انجام دهم و بگویم، به شما گفتم که یک عدد وارد کنید و سپس

03:36.320 --> 03:39.860
می‌توانیم پیام را نیز در اینجا x.message اضافه کنیم.

03:39.860 --> 03:45.410
بنابراین حالا بیایید دوباره آن را اجرا کنیم و ببینیم اگر اینجا F را وارد کنیم.

03:45.410 --> 03:47.270
به شما گفتم که یک عدد وارد کنید.

03:47.270 --> 03:50.120
رشته ورودی f در فرمت صحیح نبود.

03:50.120 --> 03:55.130
بنابراین می‌بینید که اکنون می‌توانید هر استثنا را به طور متفاوتی مدیریت کنید.

03:55.130 --> 03:59.090
و می‌توانید بگویید که بسته به استثنا باید چیز متفاوتی اتفاق بیفتد.

03:59.090 --> 04:00.650
حالا در مورد من، من آن را ساده نگه می‌دارم.

04:00.650 --> 04:02.660
فقط چیزی را بر روی کنسول می‌نویسم.

04:02.660 --> 04:09.290
حالا، به وضوح می‌توانید آن را به طور متفاوتی مدیریت کنید و کد دیگری را در چنین حالتی اجرا کنید.

04:09.290 --> 04:15.260
بنابراین اگر به عنوان مثال، کسی بر صفر تقسیم کند، می‌توانید بگویید، خوب، می‌دانید چه، من فقط

04:15.260 --> 04:19.970
نتیجه را به یک مقدار پیش‌فرض، به عنوان مثال، تنظیم می‌کنم.

04:19.970 --> 04:26.420
بنابراین اینجا می‌توانم فقط بگویم که علاوه بر آن، نتیجه برابر با ده است، خوب.

04:26.420 --> 04:29.510
بنابراین اگر بر صفر تقسیم کنیم، من فقط نتیجه را به ده می‌گذارم.

04:29.510 --> 04:30.650
بنابراین خطا ظاهر شد.

04:30.650 --> 04:32.150
و می‌توانید ببینید که نتیجه ده است.

04:32.150 --> 04:34.220
بنابراین این فقط یک مثال از آنچه می‌توانید انجام دهید.

04:34.220 --> 04:37.310
حالا به وضوح این همه بستگی به مورد استفاده شما دارد.

04:37.310 --> 04:41.060
بنابراین بیایید به یک استثنای دیگر که می‌توانیم داشته باشیم نگاهی بیندازیم.

04:41.060 --> 04:48.380
بنابراین هر زمان که با اعداد صحیح کار می‌کنیم، می‌توانیم یک عدد صحیح بسیار بزرگ بسازیم.

04:48.380 --> 04:50.150
بنابراین بیایید ببینیم.

04:50.150 --> 04:54.890
بنابراین بیایید واقعاً ببینیم که این چگونه نامیده می‌شود، راستش را بخواهید، مطمئن نیستم.

04:54.890 --> 04:57.770
بنابراین بیایید آن را به عنوان toString در اینجا قرار دهیم.

04:57.770 --> 04:59.630
بنابراین بیایید آن را به یک رشته تبدیل کنیم.

04:59.740 --> 05:02.110
با استفاده از پرانتزها در انتها.

05:02.110 --> 05:03.430
در غیر این صورت این کار نمی‌کند.

05:03.430 --> 05:09.700
حالا بگذارید یک عدد بسیار بزرگ وارد کنم که در یک INT جا نمی‌شود و می‌گوید استثنای سرریز همانطور که انتظار داشتم.

05:09.700 --> 05:10.210
خوب.

05:10.210 --> 05:14.800
بنابراین استثنایی که ایجاد کردیم، یک استثنای سرریز بود.

05:14.800 --> 05:19.000
بنابراین عدد صحیح فقط مقدار معینی فضا دارد.

05:19.000 --> 05:20.320
و حالا سرریز می‌شود.

05:20.320 --> 05:24.850
به طور کلی می‌توانید بگویید که این مانند یک سطل است که فقط می‌تواند مقدار معینی از اعداد را در خود جای دهد.

05:24.850 --> 05:25.660
اما اگر بیشتر از آن وارد کنید، سطل سرریز می‌شود.

05:25.660 --> 05:28.600
بنابراین این چیزی است که ما در اینجا به دست می‌آوریم.

05:28.600 --> 05:30.460
بنابراین بیایید از این استثنای سرریز استفاده کنیم.

05:30.460 --> 05:33.340
می‌توانید ببینید که این زیر system.overflow exception است.

05:33.340 --> 05:36.070
بنابراین می‌توانیم دقیقاً از آن استفاده کنیم.

05:36.070 --> 05:38.380
می‌توانیم آن استثنا را به طور جداگانه بگیریم.

05:38.380 --> 05:41.170
و به آن می‌گوییم استثنای سرریز.

05:41.170 --> 05:49.150
و اینجا می‌گوییم عدد خیلی بزرگ است، خوب.

05:49.150 --> 05:50.920
بنابراین بیایید دوباره آن را اجرا کنیم.

05:50.920 --> 05:54.250
این بار من اصلاً خطا را نشان نمی‌دهم، فقط می‌گویم عدد خیلی بزرگ است.

05:54.250 --> 05:57.970
و حالا بگذارید یک عدد بسیار بزرگ وارد کنم.

05:57.970 --> 05:59.980
و می‌گوید عدد خیلی بزرگ است.

06:00.040 --> 06:00.940
اینجا هستیم.

06:00.940 --> 06:09.490
بنابراین این اکنون به شما ایده کلی می‌دهد که چگونه می‌توانید انواع مختلف استثناها را مدیریت کنید.

06:09.490 --> 06:14.170
حالا می‌توانید اول از همه آن‌ها را با استفاده از استثنای پیش‌فرض مجبور کنید.

06:14.170 --> 06:17.440
این سپس جزئیاتی در مورد نام استثنا به شما می‌دهد.

06:17.440 --> 06:22.210
و سپس می‌توانید آن استثنای خاصی که رخ داده است را بگیرید.

06:22.210 --> 06:29.140
گاهی اوقات شما نمی‌توانید همه انواع مختلف استثناها را مدیریت کنید، به همین دلیل است که هنوز

06:29.140 --> 06:32.410
داشتن این استثنا، این استثنای پیش‌فرض در آنجا بسیار مفید است.

06:32.410 --> 06:33.010
خوب.

06:33.010 --> 06:34.750
بنابراین این برای این ویدیو کافی است.

06:34.750 --> 06:40.540
در ویدیوی بعدی می‌خواهم به شما نشان دهم که اگر این کد را به برنامه خود اضافه نکنید، چه اتفاقی می‌افتد.

06:40.540 --> 06:41.620
پس در ویدیوی بعدی می‌بینیم.
```
