در این مطلب، ویدئو #63 آموزش پایتون برای مبتدیان | رسیدگی به استثنا با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:03,920 –> 00:00:06,420
خوش آمدید بیگانگان نام من دبی 20 است
2
00:00:06,420 –> 00:00:08,370
و بیایید این سری را در
3
00:00:08,370 –> 00:00:10,740
پایتون ادامه دهیم تا زمانی که خوب است در مورد
4
00:00:10,740 –> 00:00:12,480
کوین های اوپس صحبت کردیم که در مورد
5
00:00:12,480 –> 00:00:14,880
اصول اولیه پایتون صحبت کردیم حالا بیایید
6
00:00:14,880 –> 00:00:16,680
به سمت موارد منفی برویم که
7
00:00:16,680 –> 00:00:17,250
8
00:00:17,250 –> 00:00:20,189
خطا هستند البته می دانم که دوست دارد. خطا، اما
9
00:00:20,189 –> 00:00:21,720
اگر در مورد این خطا صحبت کنید، ما
10
00:00:21,720 –> 00:00:24,150
به طور کلی سه نوع خطا داریم،
11
00:00:24,150 –> 00:00:26,699
اولی خطای زمان کامپایل است،
12
00:00:26,699 –> 00:00:29,250
دومی خطای منطقی است و
13
00:00:29,250 –> 00:00:32,130
سومی خطای زمان اجرا است، حالا به چه
14
00:00:32,130 –> 00:00:34,110
معناست حالا اگر خط بزنید بگوییم. کد up
15
00:00:34,110 –> 00:00:36,180
و آن کد دارای چندین عبارت در
16
00:00:36,180 –> 00:00:38,550
یکی از این دستورات است، شما یک اتم نحوی دارید
17
00:00:38,550 –> 00:00:41,010
، فرض کنید ما احساس می کنیم که با آن کار می کنیم اگر
18
00:00:41,010 –> 00:00:43,469
و سپس دونقطه را فراموش کردید، سپس
19
00:00:43,469 –> 00:00:45,000
اگر از چاپ با املای اشتباه
20
00:00:45,000 –> 00:00:46,739
استفاده می کنید، بنابراین اگر چنین
21
00:00:46,739 –> 00:00:47,460
اشتباهاتی را انجام دهید،
22
00:00:47,460 –> 00:00:50,160
خطاهای نحوی درست هستند و
23
00:00:50,160 –> 00:00:52,320
می توانید آنها را به عنوان خطاهای زمان کامپایل نام
24
00:00:52,320 –> 00:00:54,239
ببرید زیرا
25
00:00:54,239 –> 00:00:56,610
در زمان کامپایل این خطاها
26
00:00:56,610 –> 00:00:59,340
27
00:00:59,340 –> 00:01:00,780
را دریافت خواهید کرد. کار می کند، بنابراین
28
00:01:00,780 –> 00:01:01,710
هیچ اشکالی با نحو وجود ندارد،
29
00:01:01,710 –> 00:01:04,049
همه چیز کار می کند، اما وقتی
30
00:01:04,049 –> 00:01:05,970
کاربر می گوید سلام، می خواهم دو عدد
31
00:01:05,970 –> 00:01:08,400
دو به اضافه سه را اضافه کنم و چهار عدد دیگر دو
32
00:01:08,400 –> 00:01:10,140
به علاوه سه خوب است، درست است، اما بیایید بگوییم
33
00:01:10,140 –> 00:01:11,400
اگر از گرفتن کامل استفاده کنم،
34
00:01:11,400 –> 00:01:13,320
بنابراین وقتی می گویید دو به علاوه سه اگر
35
00:01:13,320 –> 00:01:15,900
جواب چهار است که خطاهای منطقی است
36
00:01:15,900 –> 00:01:18,720
و خطاهای منطقی کامپایل می شود
37
00:01:18,720 –> 00:01:21,270
کد شما نیز خروجی را به شما می دهد اما
38
00:01:21,270 –> 00:01:23,189
مشکل اینجاست که خروجی درستی نخواهد بود
39
00:01:23,189 –> 00:01:25,439
و این خطای منطقی است
40
00:01:25,439 –> 00:01:28,259
سومین موردی که داریم خطای زمان اجرا است بنابراین در
41
00:01:28,259 –> 00:01:30,240
یکی زمانی که کد شما کامپایل شود
42
00:01:30,240 –> 00:01:31,590
چه اشکالی دارد که هیچ
43
00:01:31,590 –> 00:01:34,170
خطای نحوی وجود ندارد کد شما
44
00:01:34,170 –> 00:01:36,540
در واقع یک خطای منطقی به شما نمی دهد و
45
00:01:36,540 –> 00:01:38,340
همچنین همه چیز خوب کار می کند، بنابراین وقتی
46
00:01:38,340 –> 00:01:40,650
کاربر می گوید 2+2 به شما غذا می دهد
47
00:01:40,650 –> 00:01:43,140
گاهی اوقات می دانید که آیا من کاربر ممکن است
48
00:01:43,140 –> 00:01:45,540
یک مثال ورودی اشتباه به شما بدهد، فرض کنید اگر
49
00:01:45,540 –> 00:01:47,149
میخواهید دو عدد را
50
00:01:47,149 –> 00:01:50,100
5/6 تقسیم کنید، خوب است، بنابراین هر دو مقدار
51
00:01:50,100 –> 00:01:52,740
از یک کاربر درست میآیند، بنابراین شما سعی میکنید
52
00:01:52,740 –> 00:01:54,450
دو عددی را که توسط کاربر داده میشود تقسیم کنید.
53
00:01:54,450 –> 00:01:57,299
ys 6 + 2 درست کار
54
00:01:57,299 –> 00:01:59,219
می کند، اگر از سایز 10 و 5 استفاده کنم به شما 3 می دهد،
55
00:01:59,219 –> 00:02:01,920
شما می دانید که دوباره 2 است، اما
56
00:02:01,920 –> 00:02:04,920
اگر کاربر بگوید 6 + 0 شما نمی توانید
57
00:02:04,920 –> 00:02:07,200
یک عدد را بر 0 درست تقسیم کنید و
58
00:02:07,200 –> 00:02:09,660
آن جایی است که به شما می دهد. شما یک خطا در حال حاضر این
59
00:02:09,660 –> 00:02:12,120
یک کامپایلر نیست، زیرا کد به درستی حاوی کد است
60
00:02:12,120 –> 00:02:12,690
61
00:02:12,690 –> 00:02:14,520
، این یک خطای منطقی نیست،
62
00:02:14,520 –> 00:02:16,530
زیرا برای اجرای معمولی
63
00:02:16,530 –> 00:02:18,900
کار می کند، برای هیچ کدام کار نمی کند
64
00:02:18,900 –> 00:02:20,850
اما برای آن کار نمی کند منظورم این است که
65
00:02:20,850 –> 00:02:23,130
کد شما در جایی بین کار می کرد.
66
00:02:23,130 –> 00:02:24,750
خطای دریافت شما و این خطای زمان اجرا شماست،
67
00:02:24,750 –> 00:02:26,610
زیرا در حال حاضر در زمان اجرا خطا دریافت میکنید،
68
00:02:26,610 –> 00:02:29,700
69
00:02:29,700 –> 00:02:31,950
که سادهترین دستور برای یافتن زمان کامپایل
70
00:02:31,950 –> 00:02:33,570
درست است، زیرا در زمان کامپایل
71
00:02:33,570 –> 00:02:35,580
در سطح توسعهدهنده در
72
00:02:35,580 –> 00:02:36,780
خود سایت توسعهدهنده، خطا دریافت میکنید.
73
00:02:36,780 –> 00:02:39,600
خطاهای منطقی مجدداً باید
74
00:02:39,600 –> 00:02:41,490
رسیدگی شود، زیرا احتمالاً برنامه را نیز
75
00:02:41,490 –> 00:02:43,230
به درستی آزمایش می کند، ما یک
76
00:02:43,230 –> 00:02:45,330
تیم آزمایشی خاص برای آن داریم، بنابراین
77
00:02:45,330 –> 00:02:47,460
ما این نرم افزار را برای اشکالات مختلف آزمایش می کنیم، بسیار
78
00:02:47,460 –> 00:02:48,810
منطقی است و معمولاً در
79
00:02:48,810 –> 00:02:49,800
اشکالات وجود دارد.
80
00:02:49,800 –> 00:02:52,290
همچنین در مورد خطای زمان اجرا چه می شود زیرا یک
81
00:02:52,290 –> 00:02:54,330
بار ببینید یا این اشتباه توسط
82
00:02:54,330 –> 00:02:56,040
شما انجام نشده است اشتباه توسط کاربر درست انجام می شود
83
00:02:56,040 –> 00:02:58,770
بنابراین اگر می گویید هی یوزر 82
84
00:02:58,770 –> 00:03:01,470
مقادیر و در ذهن خود دارید که یک
85
00:03:01,470 –> 00:03:04,170
کاربر مقدار صفر را برای آن وارد نمی کند. مورد
86
00:03:04,170 –> 00:03:06,510
دوم اما کاربر انجام می دهد که شاید
87
00:03:06,510 –> 00:03:08,670
این برنامه از فایل خاصی
88
00:03:08,670 –> 00:03:11,460
از یک درایو seed استفاده می کند بنابراین از
89
00:03:11,460 –> 00:03:14,070
هفت روز گذشته کار می کرد و امروز صبح کاربر
90
00:03:14,070 –> 00:03:16,530
آن فایل را حذف کرده است و حالا اگر
91
00:03:16,530 –> 00:03:17,910
باز کنید سازگاری را به شما می دهد
92
00:03:17,910 –> 00:03:19,620
زیرا اینطور نیست می تواند فایل را درست پیدا کند،
93
00:03:19,620 –> 00:03:22,410
بنابراین همه این موارد با
94
00:03:22,410 –> 00:03:23,970
خطای زمان اجرا مواجه می شوند، بنابراین فکر نمی کنید
95
00:03:23,970 –> 00:03:25,500
که مشکلی نیست، درست است که یک مشکل
96
00:03:25,500 –> 00:03:27,390
کاربر است، کاربر قادر به رسیدگی به این مشکل نیست،
97
00:03:27,390 –> 00:03:30,000
اول از همه به عنوان یک توسعه دهنده
98
00:03:30,000 –> 00:03:31,560
که باید از آن مراقبت کنید ببینید. همه آن
99
00:03:31,560 –> 00:03:33,540
چیزهایی که باید بدانید
100
00:03:33,540 –> 00:03:35,820
کاربر ما چه اشتباهاتی می تواند انجام دهد، شاید
101
00:03:35,820 –> 00:03:38,400
دقیقاً یک کاربر نیست، اما ممکن
102
00:03:38,400 –> 00:03:39,750
است اتصال پایگاه داده
103
00:03:39,750 –> 00:03:40,709
مشکلی داشته باشد، ممکن است اتصال شبکه مشکل داشته باشد،
104
00:03:40,709 –> 00:03:41,910
بنابراین اگر از یک
105
00:03:41,910 –> 00:03:43,890
برنامه کاربردی استفاده می کنید n که با این سرور تعامل دارد
106
00:03:43,890 –> 00:03:45,780
و شاید اینترنت وجود نداشته باشد،
107
00:03:45,780 –> 00:03:47,550
پس چه اتفاقی می افتد نرم افزار شما
108
00:03:47,550 –> 00:03:49,890
نباید متوقف شود، آنها با
109
00:03:49,890 –> 00:03:52,350
خطای زمان اجرا مواجه می شوند که اجرای شما متوقف می شود
110
00:03:52,350 –> 00:03:53,310
و این یک مشکل
111
00:03:53,310 –> 00:03:55,140
نرم افزار بانکی است، بنابراین می گوید
112
00:03:55,140 –> 00:03:57,209
ما میلیون ها تراکنش روی
113
00:03:57,209 –> 00:03:58,920
سرور داریم. و تنها یک
114
00:03:58,920 –> 00:04:01,080
خطای زمان اجرا وجود دارد که به دلیل آن
115
00:04:01,080 –> 00:04:03,239
نرم افزار شما از کار می
116
00:04:03,239 –> 00:04:05,010
افتد و میلیاردها دلار ضرر خواهید کرد، بنابراین
117
00:04:05,010 –> 00:04:06,810
نکته مهم این است که حتی اگر در
118
00:04:06,810 –> 00:04:08,340
حال گرفتن استثنا باشید، حتی اگر
119
00:04:08,340 –> 00:04:11,310
خطا را دریافت کنید، اجرای شما
120
00:04:11,310 –> 00:04:13,680
نباید متوقف شود، این منطق اصلی ما در اینجا است.
121
00:04:13,680 –> 00:04:15,000
بگذارید در مثال اینجا به شما نشان دهم که چه کاری
122
00:04:15,000 –> 00:04:16,709
انجام خواهم داد این است که سعی می کنم از دو
123
00:04:16,709 –> 00:04:18,779
متغیر در اینجا استفاده کنم، می گویم a برابر با
124
00:04:18,779 –> 00:04:21,209
5 و B برابر با 2 است و البته اگر
125
00:04:21,209 –> 00:04:22,590
این 2 عدد را تقسیم کنیم جواب می دهد
126
00:04:22,590 –> 00:04:24,620
بیایید سعی کنیم تا من می گویم
127
00:04:24,620 –> 00:04:27,470
تقسیم بر B را اکنون در این کد چاپ کنید اگر می
128
00:04:27,470 –> 00:04:29,120
توانید ببینید که ما سه دستور
129
00:04:29,120 –> 00:04:30,229
داریم، ما خط شماره سه را داریم که
130
00:04:30,229 –> 00:04:32,030
عبارت یک خط شماره چهار با یک
131
00:04:32,030 –> 00:04:33,440
دستور به خط شماره شش
132
00:04:33,440 –> 00:04:35,360
عبارت است. t اکنون از این سه
133
00:04:35,360 –> 00:04:37,400
عبارت می توانید عبارت را به
134
00:04:37,400 –> 00:04:39,620
دو قسمت تقسیم کنید. یک عبارت عادی است و
135
00:04:39,620 –> 00:04:41,540
سپس عبارت انتقادی عبارت عادی داریم
136
00:04:41,540 –> 00:04:43,160
که به شما مثال نمی دهد
137
00:04:43,160 –> 00:04:45,110
وقتی می گویید برابر با پنج
138
00:04:45,110 –> 00:04:46,400
است، مشکلی وجود ندارد که
139
00:04:46,400 –> 00:04:47,720
وقتی شما بگو قادر به انجام این کار
140
00:04:47,720 –> 00:04:49,610
مشکلی وجود ندارد، حتی در آینده
141
00:04:49,610 –> 00:04:50,960
اگر بخواهیم مقدار را از
142
00:04:50,960 –> 00:04:53,300
پنج به چیز دیگری تغییر دهیم، به شما خطایی نمی دهد
143
00:04:53,300 –> 00:04:53,930
144
00:04:53,930 –> 00:04:56,720
که با خط شماره شش است، بنابراین با خط شماره شش چه
145
00:04:56,720 –> 00:04:58,910
اتفاقی می افتد، آن را
146
00:04:58,910 –> 00:05:00,979
اجرا می کند. این کد به من اجازه دهید آن را امتحان کنم، بنابراین
147
00:05:00,979 –> 00:05:02,479
من اینجا کلیک راست می کنم، آن را یکی می گویم
148
00:05:02,479 –> 00:05:04,580
و می توانید ببینید که کار می کند، شما
149
00:05:04,580 –> 00:05:06,740
تصویر بیرونی دو نقطه پنج را دارید و فرض کنید
150
00:05:06,740 –> 00:05:08,570
پس از انجام این کار، اجازه دهید من یک
151
00:05:08,570 –> 00:05:10,250
بیانیه را نیز چاپ کنم. یعنی
152
00:05:10,250 –> 00:05:11,870
بعد از چاپ مقداری که من هم چاپ می کنم
153
00:05:11,870 –> 00:05:14,479
و حالا این کد را اجرا می کنم،
154
00:05:14,479 –> 00:05:16,280
می بینید که داریم خروجی
155
00:05:16,280 –> 00:05:18,949
می گیریم و بعد هم داریم به نتیجه می رسیم
156
00:05:18,949 –> 00:05:23,479
اگر مقدار B را به 0 C تغییر دهم،
157
00:05:23,479 –> 00:05:24,650
البته ما می دانیم چه می شود. که شما ممکن نیست
158
00:05:24,650 –> 00:05:26,300
159
00:05:26,300 –> 00:05:28,580
در لحظه ای که این کار را انجام می دهید یک عدد را بر صفر تقسیم می کنید که یک خطا دریافت می کنید
160
00:05:28,580 –> 00:05:30,320
و البته خطایی که می
161
00:05:30,320 –> 00:05:33,139
گوید یک رد به عقب وجود داشت و سپس
162
00:05:33,139 –> 00:05:35,000
خط شماره شش بود بسیار خوب که درست مانند
163
00:05:35,000 –> 00:05:37,220
شماره شش ما خطا را دریافت کردیم. همچنین
164
00:05:37,220 –> 00:05:38,840
این عبارت را که
165
00:05:38,840 –> 00:05:42,620
داده ها را به شما می دهد چاپ کنید و همچنین هر چیزی را که هست نشان می دهد
166
00:05:42,620 –> 00:05:45,650
و خطای تقسیم صفر است بنابراین
167
00:05:45,650 –> 00:05:47,660
این تقسیم پیام شما بر صفر
168
00:05:47,660 –> 00:05:50,389
است درست نیست پس چگونه این را حل کنیم
169
00:05:50,389 –> 00:05:52,010
بنابراین دو مشکل در اینجا وجود دارد که
170
00:05:52,010 –> 00:05:54,169
اولی کاربر متوجه نمی شود که
171
00:05:54,169 –> 00:05:55,460
این خطا به چه معناست
172
00:05:55,460 –> 00:05:58,490
ستون دوم سمت راست، می توانید ببینید که ما
173
00:05:58,490 –> 00:06:00,199
در خروجی به دست نمی آوریم، بنابراین در
174
00:06:00,199 –> 00:06:02,599
خروجی هیچ پایی وجود ندارد که به این معنی است که
175
00:06:02,599 –> 00:06:04,910
اجرای شما در این بین متوقف می شود،
176
00:06:04,910 –> 00:06:07,610
ما آن را نمی خواهیم، بنابراین اگر می خو
177
00:06:07,610 –> 00:06:09,710
هید این مشکل را حل کنید ما باید از یک
178
00:06:09,710 –> 00:06:12,770
بلوک خاص C در این نوع کدها استفاده
179
00:06:12,770 –> 00:06:14,720
کنیم، استثناهایی دریافت می کنیم، اما خطا دریافت می کنیم،
180
00:06:14,720 –> 00:06:17,479
بنابراین کاری که می توانید انجام دهید این است که
181
00:06:17,479 –> 00:06:19,310
بلوک خود را چه چیزی دارید، فقط باید
182
00:06:19,310 –> 00:06:21,500
آن را در یک بلوک خشک یا در یک بلوک خشک قرار دهید.
183
00:06:21,500 –> 00:06:23,630
بیانیه بنابراین ما باید نازک خاص g
184
00:06:23,630 –> 00:06:26,330
به عنوان خشک نامیده می شود، بنابراین آنچه ما می گوییم سلام
185
00:06:26,330 –> 00:06:29,300
این خط کد، این یک
186
00:06:29,300 –> 00:06:31,490
عبارت حیاتی است و مطمئن نیستم که آیا این کد
187
00:06:31,490 –> 00:06:34,400
کار می کند یا نه، بنابراین سعی کنید آن را اجرا کنید،
188
00:06:34,400 –> 00:06:36,860
بنابراین سعی کنید اجرا کنید تا پایتون شما
189
00:06:36,860 –> 00:06:38,030
بگوید OK
190
00:06:38,030 –> 00:06:39,560
از آنجایی که شما این را می نویسید. در یک
191
00:06:39,560 –> 00:06:42,020
بلوک try من سعی می کنم اجرا کنم، اما اگر خطایی وجود داشته باشد، چه می شود
192
00:06:42,020 –> 00:06:43,700
، آنگاه می گویید اوه
193
00:06:43,700 –> 00:06:45,890
باشه، اگر خطایی وجود داشته باشد، بسیار
194
00:06:45,890 –> 00:06:49,130
ساده است، من خطا را قبول می کنم بسیار خوب، من
195
00:06:49,130 –> 00:06:51,200
آن را به عنوان یک برنامه نویس مدیریت می کنم و
196
00:06:51,200 –> 00:06:53,060
روشی که شما انجام می دهید این است که اجازه دادن به استثنا
197
00:06:53,060 –> 00:06:56,360
بنابراین شما باید بگویید پذیرش استثناء در حال
198
00:06:56,360 –> 00:06:58,100
حاضر استثنا تا لحظه ای که
199
00:06:58,100 –> 00:06:59,870
ویرایش این خط را دریافت می کنید به شما
200
00:06:59,870 –> 00:07:02,420
خطا می دهد و این جایی است که شما آن را کنترل می
201
00:07:02,420 –> 00:07:04,550
کنید که چه نوع دستی می خواهیم
202
00:07:04,550 –> 00:07:04,970
در اینجا
203
00:07:04,970 –> 00:07:06,530
چگونه می توانید هر کاری انجام دهید شما مثال می خواهید،
204
00:07:06,530 –> 00:07:08,360
بنابراین اگر می دانید که به
205
00:07:08,360 –> 00:07:10,820
دلیل تقسیم بر B است، می توانید به سادگی
206
00:07:10,820 –> 00:07:16,460
بگویید هی شما نمی توانید یک عدد را بر 0 تقسیم کنید
207
00:07:16,460 –> 00:07:19,190
و به من اعتماد کنید این پیام بسیار بهتر
208
00:07:19,190 –> 00:07:20,270
از خطایی است که قبلاً نشان می دهیم،
209
00:07:20,270 –> 00:07:23,120
بنابراین اگر کاربر به
210
00:07:23,120 –> 00:07:24,950
شما مقداری می دهد که برای آن 0 است مقدار دوم
211
00:07:24,950 –> 00:07:26,990
شما یک پیام را با گفتن
212
00:07:26,990 –> 00:07:28,790
هی نمی توانید یک عدد را بر 0 تقسیم کنید
213
00:07:28,790 –> 00:07:31,190
چاپ می کنید، نمی توانید هر پیامی را که می خواهید چاپ کنید، در واقع
214
00:07:31,190 –> 00:07:32,660
شما نمی توانید فقط یک پیام را چاپ
215
00:07:32,660 –> 00:07:34,610
کنید، به عنوان مثال اگر می خواهید عملیاتی را انجام دهید می توانید هر کاری را که نیاز
216
00:07:34,610 –> 00:07:36,230
دارید انجام دهید. در اینجا
217
00:07:36,230 –> 00:07:37,430
می توانید این کار را انجام دهید، به عنوان مثال، اگر می خواهید
218
00:07:37,430 –> 00:07:38,990
دو عدد را در چیزی که دو عدد اضافه می کنید ضرب
219
00:07:38,990 –> 00:07:40,880
کنید، می توانید عملیات متفاوتی
220
00:07:40,880 –> 00:07:43,970
را در اینجا نیز انجام دهید، ما نمی خواهیم
221
00:07:43,970 –> 00:07:46,460
آن را ساده نگه داریم، بنابراین در بلوک خروج
222
00:07:46,460 –> 00:07:48,530
پیام را چاپ می کنید و اکنون
223
00:07:48,530 –> 00:07:50,510
بیایید این کد را اجرا کنیم و میتوانید ببینید که
224
00:07:50,510 –> 00:07:52,430
کار میکند، میتوانید ببینید که ما دریافت کردیم هی، شما نمیتوانید
225
00:07:52,430 –> 00:07:53,690
یک عدد را بر صفر تقسیم کنید و همچنین در حال
226
00:07:53,690 –> 00:07:55,910
چاپ است، بنابراین درست کار میکند،
227
00:07:55,910 –> 00:07:58,070
بنابراین کاری که ما انجام میدهیم
228
00:07:58,070 –> 00:08:00,170
این است که اگر این کار درست کرد، سعی میکنیم ای