
WEBVTT

00:00.110 --> 00:00.830
خوش آمدید.

00:00.830 --> 00:03.590
در این ویدیو به کلمه کلیدی throw خواهیم پرداخت.

00:03.590 --> 00:06.470
شاید بپرسید throw چه کاری انجام می‌دهد.

00:06.500 --> 00:12.620
خوب، کلمه کلیدی throw در C# برای نشان دادن این است که یک مشکل در برنامه شما رخ داده است.

00:12.620 --> 00:18.800
بنابراین وقتی از throw استفاده می‌کنید، در واقع می‌گویید، هی، اینجا چیزی اشتباه است و من نمی‌توانم

00:18.800 --> 00:20.120
به تنهایی آن را مدیریت کنم.

00:20.120 --> 00:24.260
شما عمداً یک خطا ایجاد می‌کنید که به آن استثنا می‌گویند.

00:24.260 --> 00:29.840
ما خواهیم دید که چگونه شخص دیگری، به اصطلاح، می‌تواند بعداً این خطا را مدیریت کند.

00:29.840 --> 00:32.510
پس چرا باید از throw استفاده کنید؟

00:32.510 --> 00:36.350
خوب، شما از آن برای جلوگیری از وقوع چیزهای بد استفاده می‌کنید.

00:36.350 --> 00:42.800
اگر چیزی در برنامه شما، به عنوان مثال، درست نباشد، مانند اینکه یک فایل ضروری گم شده یا یک

00:42.800 --> 00:45.500
عدد که هرگز نباید صفر باشد، صفر است.

00:45.530 --> 00:51.260
استفاده از throw برنامه را قبل از اینکه آسیب بیشتری وارد شود متوقف می‌کند.

00:51.260 --> 00:56.540
و سپس بخش دوم این است که به سایر بخش‌های برنامه شما در مورد مشکل اطلاع دهد.

00:56.540 --> 01:03.290
بنابراین گاهی اوقات یک بخش از برنامه شما ممکن است ندانند چگونه یک مشکل را حل کند، اما بخش دیگری می‌داند.

01:03.290 --> 01:04.730
بنابراین با استفاده از throw.

01:04.760 --> 01:10.550
بخش اول می‌تواند اجازه دهد که بخش دوم مسئله را مدیریت کند و ما در ادامه این را خواهیم دید.

01:10.550 --> 01:19.550
بنابراین به طور کلی می‌توان گفت که کلمه کلیدی throw اطمینان می‌دهد که هیچ چیزی در ادامه برنامه شما را خراب نکند

01:19.550 --> 01:24.260
یا باعث آسیب غیرقابل جبرانی در آینده نشود.

01:24.260 --> 01:31.010
بنابراین فرض کنید اگر این خطا را اکنون پرتاب نکنید، داده‌ای که نباید به پایگاه داده برود

01:31.010 --> 01:37.250
به پایگاه داده خواهد رفت و ممکن است کل پایگاه داده را خراب کند، یا یک کاربر ممکن است به حقوق مدیر دسترسی پیدا کند،

01:37.250 --> 01:42.830
هرچند که نباید به حقوق مدیر دسترسی پیدا کند، به عنوان مثال، درست است، یا به پایگاه داده

01:42.830 --> 01:43.490
به طور کلی.

01:43.490 --> 01:48.560
بنابراین اگر چیزی مانند این اتفاق بیفتد، می‌توانید با استفاده از کلمه کلیدی throw از آن جلوگیری کنید.

01:48.560 --> 01:50.420
یا به طور کلی می‌توانید فقط یک خطا پرتاب کنید.

01:50.420 --> 01:55.880
می‌توانید فقط بگویید، خوب، اگر این اتفاق بیفتد، نمی‌خواهم برنامه ادامه یابد، فقط برنامه را خراب کن.

01:55.880 --> 01:56.480
این چیزی است که ما اینجا می‌گوییم.

01:56.480 --> 01:57.830
بیایید نگاهی بیندازیم که این چگونه می‌تواند به نظر برسد.

01:57.830 --> 02:01.010
بنابراین من این int get user h را دارم و ما یک h وارد می‌کنیم.

02:01.010 --> 02:06.920
و سپس این h برگردانده خواهد شد.

02:06.920 --> 02:09.260
بنابراین آنچه ما انجام می‌دهیم این است که ورودی کاربر را می‌گیریم.

02:09.260 --> 02:12.980
ما سعی می‌کنیم آن را تجزیه کنیم.

02:12.980 --> 02:14.720
و می‌گوییم ورودی را به من بدهید.

02:14.720 --> 02:18.080
و ما h را می‌دهیم.

02:18.080 --> 02:20.930
بنابراین اگر مشخص شود که هر رشته‌ای که وارد شده است می‌تواند به یک عدد صحیح تبدیل شود، 

02:20.930 --> 02:29.420
سپس ما آن را در h ذخیره خواهیم کرد.

02:29.420 --> 02:32.390
این چیزی است که این out h انجام می‌دهد.

02:32.390 --> 02:34.070
و این علامت تعجب فقط می‌گوید، خوب، اگر این کار نکرد،

02:34.070 --> 02:42.020
اگر that try parse false برگرداند، پس می‌گوییم throw new exception.

02:42.020 --> 02:44.030
شما یک h معتبر وارد نکردید.

02:44.030 --> 02:50.510
بنابراین اگر h درست نبود، خوب، سپس ما این کار را انجام خواهیم داد.

02:50.510 --> 02:57.260
در مرحله بعد می‌گوییم اگر h کمتر از صفر یا بیشتر از 120 باشد، ما نیز یک استثنا پرتاب خواهیم کرد.

02:57.260 --> 02:58.070
می‌گوییم h شما باید بین 0 و 120 باشد.

02:58.070 --> 03:06.110
حالا شما می‌توانید به وضوح در این مثال خاص، که بسیار، بسیار ساده است، واقعاً فقط

03:06.110 --> 03:07.970
درباره نشان دادن نحوه کار کلمه کلیدی throw است.

03:07.970 --> 03:11.960
این در مورد منطقی نیست که ما در یک برنامه واقعی پیاده‌سازی کنیم.

03:11.960 --> 03:18.800
ما برنامه خود را به خاطر اینکه یک کاربر عدد درست را وارد نکرده است، خراب نمی‌کنیم، یا بنابراین ما می‌خواهیم

03:18.830 --> 03:25.910
به وضوح آن را جمع‌آوری یا ضبط کنیم، یا از یک دستور if به طور مناسب استفاده کنیم، یا از try catch برای آن استفاده کنیم.

03:25.910 --> 03:31.160
اما در این مورد، آنچه می‌خواهم به شما نشان دهم واقعاً این است که چگونه این کلمه کلیدی throw کار می‌کند و چگونه

03:31.160 --> 03:33.770
در واقع یک استثنا ایجاد می‌کند و برنامه را خراب می‌کند.

03:33.770 --> 03:36.110
بنابراین بیایید حالا از این استفاده کنیم.

03:36.110 --> 03:37.880
راستی، ما بعد از آن h را برمی‌گردانیم.

03:37.880 --> 03:42.470
بنابراین حالا بیایید از این متد در داخل متد اصلی خود استفاده کنیم.

03:42.470 --> 03:52.400
و ما از console یا console.read line برای دریافت ورودی کاربر استفاده می‌کنیم و آن را به get user h خود منتقل می‌کنیم.

03:52.400 --> 03:54.020
حالا برای اینکه بتوانم از این متد استفاده کنم، باید آن را static کنم

03:54.140 --> 04:00.770
زیرا ما در داخل کلاس برنامه static خود هستیم.

04:00.770 --> 04:01.790
در غیر این صورت این کار نمی‌کند.

04:01.790 --> 04:03.170
بنابراین به کاربر نیز بگویید که می‌خواهیم h آن‌ها را داشته باشیم، "سن خود را وارد کنید" و سپس بیایید برنامه خود را اجرا کنیم.

04:03.170 --> 04:12.170
بنابراین سن خود را وارد کنید.

04:12.170 --> 04:14.270
من می‌خواهم پنج را وارد کنم.

04:14.270 --> 04:15.230
همه چیز خوب است.

04:15.230 --> 04:15.890
برنامه ما به طور بی‌نقص کار می‌کند.

04:15.890 --> 04:17.480
حالا بیایید دوباره آن را اجرا کنیم.

04:17.480 --> 04:18.770
و این بار می‌خواهم 125 را وارد کنم.

04:18.770 --> 04:21.410
و می‌بینید که با این خطای سن مواجه می‌شوم که می‌گوید system.exception.

04:21.410 --> 04:26.210
سن شما باید بین 0 و 120 باشد.

04:26.210 --> 04:29.300
خوب.

04:29.330 --> 04:29.720
بنابراین

04:29.720 --> 04:34.400
گفت که این کار کرد، بنابراین می‌توانست هر چیزی را که وارد کردم به یک عدد تجزیه کند.

04:34.400 --> 04:35.150
این خوب بود.

04:35.150 --> 04:38.960
اما سپس بررسی کرد که آیا سن بین 0 و 120 است؟

04:38.960 --> 04:42.710
خوب، نبود، بنابراین بد برای شما یا بدشانس.

04:42.710 --> 04:44.150
برنامه خراب خواهد شد.

04:44.150 --> 04:45.890
حالا بیایید باعث خراب شدن دیگری شویم.

04:45.890 --> 04:47.810
بیایید چیزی وارد کنیم که عدد نیست.

04:47.810 --> 04:50.060
و می‌بینید که این استثنای دیگری دریافت می‌کنیم.

04:50.060 --> 04:52.070
بنابراین برنامه ما در اینجا خراب می‌شود.

04:52.070 --> 04:54.320
می‌گوید شما یک سن معتبر وارد نکردید.

04:54.320 --> 04:59.510
بنابراین حالا یک مثال بسیار ساده واقعاً این است که بگوییم خوب، اگر کاربر یک.

04:59.650 --> 05:00.340
ران لنگبرگ.

05:00.340 --> 05:07.930
ما برنامه را خراب می‌کنیم تا عدد نادرست، سن نادرست هرگز به پایگاه داده نرود یا برنامه فقط

05:07.930 --> 05:08.980
نمی‌تواند کار کند.

05:08.980 --> 05:15.190
اگر این به درستی وارد نشود، به عنوان مثال، پس ما فقط خواهیم گفت، هی، متاسفم، برنامه را خراب می‌کنیم.

05:15.190 --> 05:15.520
خوب نیست، اما این همان است.

05:15.520 --> 05:17.620
خوب، اما همانطور که گفتم، این واقعاً فقط زمانی منطقی خواهد بود که هر چیزی که با داده‌های نادرست اتفاق بیفتد

05:17.620 --> 05:18.430
یا هر چیزی

05:18.430 --> 05:27.220
باعث مشکلات عمده‌ای در آینده شود، مانند خراب کردن پایگاه داده شما یا دادن دسترسی به یک کاربر به حقوق مدیر

05:27.220 --> 05:34.930
یا به پایگاه داده به طور کلی یا چیزی شبیه به آن.

05:34.930 --> 05:40.810
خوب، بنابراین این‌ها فقط چند مثال بودند.

05:40.810 --> 05:43.570
حالا می‌بینید که چگونه می‌توانید از کلمه کلیدی throw برای فعالانه ایجاد یک استثنا استفاده کنید.

05:43.570 --> 05:48.940
حالا در ویدیوهای بعدی به استثناها و انواع مختلف آن‌ها خواهیم پرداخت.

05:48.940 --> 05:53.500
ما چند استثنا را قبلاً دیده‌ایم، اما ندیدیم که چگونه می‌توانیم آن‌ها را به تنهایی مدیریت کنیم.

05:53.500 --> 05:59.140
بنابراین به طور جداگانه، به اصطلاح، بسته به اینکه کدام استثنا گرفته شده است.

05:59.140 --> 06:03.070
پس در ویدیوی بعدی می‌بینیم.

