در این مطلب، ویدئو مدیریت استثنا در پایتون | EXCEPT را در پایتون امتحان کنید | آموزش پایتون برای مبتدیان شماره 8 با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:14:52
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,160 –> 00:00:02,320
سلام بچه ها بیایید در مورد
2
00:00:02,320 –> 00:00:04,160
رسیدگی به استثنا در
3
00:00:04,160 –> 00:00:06,480
4
00:00:06,480 –> 00:00:07,279
5
00:00:07,279 –> 00:00:09,280
6
00:00:09,280 –> 00:00:11,599
پایتون صحبت کنیم که یک استثنا
7
00:00:11,599 –> 00:00:12,639
8
00:00:12,639 –> 00:00:14,719
9
00:00:14,719 –> 00:00:17,039
10
00:00:17,039 –> 00:00:18,560
است. انواع مختلفی از
11
00:00:18,560 –> 00:00:20,640
خطاها ممکن است در برنامه پایتون شما رخ دهد
12
00:00:20,640 –> 00:00:22,720
و ما میتوانیم با
13
00:00:22,720 –> 00:00:26,000
استفاده از بلوک try and accept در پایتون این استثناها را مدیریت کنیم،
14
00:00:26,000 –> 00:00:27,599
اگر در برنامهنویسی جدید هستید، ممکن است
15
00:00:27,599 –> 00:00:28,960
تعجب کنید که چرا باید
16
00:00:28,960 –> 00:00:29,599
استثناها را به
17
00:00:29,599 –> 00:00:31,599
درستی مدیریت کنیم یا وجود دارد خطا این یک
18
00:00:31,599 –> 00:00:33,760
خطا است، ما فقط باید کد خود را درست اصلاح کنیم،
19
00:00:33,760 –> 00:00:36,160
اما دقیقاً اینطور نیست، زیرا
20
00:00:36,160 –> 00:00:37,920
اگر کد شما استثنائات را مدیریت نمی کند،
21
00:00:37,920 –> 00:00:39,760
به محض اینکه
22
00:00:39,760 –> 00:00:40,239
خطایی رخ داد،
23
00:00:40,239 –> 00:00:42,239
کل برنامه شما یا کل کد
24
00:00:42,239 –> 00:00:43,360
شما خراب می شود،
25
00:00:43,360 –> 00:00:44,800
ما معمولاً نمی خواهیم این
26
00:00:44,800 –> 00:00:46,800
اتفاق می افتد، بنابراین اگر شما در حال ساخت یک نرم افزار
27
00:00:46,800 –> 00:00:48,480
یا کار بر روی یک پروژه بزرگ
28
00:00:48,480 –> 00:00:50,079
بر اساس خطاهای خاص هستید، ما نمی
29
00:00:50,079 –> 00:00:52,239
خواهیم کل پروژه از کار بیفتد یا
30
00:00:52,239 –> 00:00:54,000
کل نرم افزار به درستی از
31
00:00:54,000 –> 00:00:56,399
کار بیفتد. به همین دلیل است که ما باید برنامه خود را
32
00:00:56,399 –> 00:00:57,039
33
00:00:57,039 –> 00:00:59,520
بسیار هوشمندانه بنویسیم تا بتوانیم
34
00:00:59,520 –> 00:01:00,320
استثناها
35
00:01:00,320 –> 00:01:03,600
را مدیریت کنیم و خطاها را کنترل کنیم بسیار خوب حالا اجازه دهید
36
00:01:03,600 –> 00:01:05,519
برای درک بهتر این موضوع به چند مثال
37
00:01:05,519 –> 00:01:06,720
38
00:01:06,720 –> 00:01:08,560
در این ویدیو نگاه کنیم. من به شما نشان می دهم که چگونه
39
00:01:08,560 –> 00:01:10,479
می توانیم از try و استفاده کنیم. پذیرش بلوک در
40
00:01:10,479 –> 00:01:12,640
برنامه پایتون ما برای رسیدگی به استثناها،
41
00:01:12,640 –> 00:01:14,320
من همچنین به شما نشان خواهم داد که چگونه میتوانیم
42
00:01:14,320 –> 00:01:16,479
از other و در نهایت بندها
43
00:01:16,479 –> 00:01:19,600
در داخل بلوک try و قبول خود استفاده کنیم و همچنین
44
00:01:19,600 –> 00:01:21,600
استثناها را افزایش دهیم، اینها اساساً
45
00:01:21,600 –> 00:01:23,920
استثناهای تعریف شده توسط کاربر هستند که میتوانیم در پایتون از آنها استفاده کنیم.
46
00:01:23,920 –> 00:01:26,640
می توانم ببینم که من یک
47
00:01:26,640 –> 00:01:28,560
برنامه ساده در اینجا دارم کاری که این برنامه انجام می دهد این است
48
00:01:28,560 –> 00:01:30,159
که دو عدد را اضافه می کند، بنابراین
49
00:01:30,159 –> 00:01:33,600
اجازه دهید این برنامه را
50
00:01:33,600 –> 00:01:35,200
اجرا کنم، بنابراین وقتی این برنامه را اجرا می کنم با
51
00:01:35,200 –> 00:01:37,520
یک خطا مواجه می شوم، اما همچنین می توانید ببینید که
52
00:01:37,520 –> 00:01:38,880
چیزی در اینجا چاپ می
53
00:01:38,880 –> 00:01:40,880
شود، به این دلیل است که من m این تابع را
54
00:01:40,880 –> 00:01:42,479
برای زمانهای مختلف فراخوانی میکنم، بنابراین وقتی
55
00:01:42,479 –> 00:01:44,159
برای اولین بار آن را صدا میزنم، یک و دو را پاس میکنم،
56
00:01:44,159 –> 00:01:45,759
بنابراین مجموع این
57
00:01:45,759 –> 00:01:46,960
دو را برمیگردانم که
58
00:01:46,960 –> 00:01:49,840
در تماس دوم سه است، من از پنج
59
00:01:49,840 –> 00:01:51,280
و ده عبور میکنم، بنابراین بازگشت th e
60
00:01:51,280 –> 00:01:53,439
مجموع پنج و ده که پانزده می شود و
61
00:01:53,439 –> 00:01:54,880
در فراخوانی سوم
62
00:01:54,880 –> 00:01:57,600
من در واقع 7 و یک کاراکتر a را پاس می کنم
63
00:01:57,600 –> 00:01:59,119
و اینجاست که خطا را نشان می دهد
64
00:01:59,119 –> 00:02:00,000
زیرا
65
00:02:00,000 –> 00:02:02,719
پایتون نمی تواند یک رشته و یک
66
00:02:02,719 –> 00:02:03,600
عدد صحیح را به
67
00:02:03,600 –> 00:02:05,759
محض اینکه این خطا را دریافت کنم هر کدی را
68
00:02:05,759 –> 00:02:07,280
که می گیرم اضافه کند. پس
69
00:02:07,280 –> 00:02:09,440
از اجرا نشدن این وجود دارد، بنابراین من خطای
70
00:02:09,440 –> 00:02:11,920
اینجا را میگیرم که از این خط خاص است،
71
00:02:11,920 –> 00:02:14,000
پس از این، دو خط آخر
72
00:02:14,000 –> 00:02:15,680
اجرا نمیشوند، بنابراین این اتفاقی میافتد
73
00:02:15,680 –> 00:02:17,360
که
74
00:02:17,360 –> 00:02:18,959
به محض اینکه استثنایی وجود داشته باشد، استثناها را مدیریت نکنید.
75
00:02:18,959 –> 00:02:21,440
برنامه شما کل برنامه خراب می شود، بنابراین
76
00:02:21,440 –> 00:02:22,000
هر
77
00:02:22,000 –> 00:02:24,879
کدی که بعد از آن خط uh وجود دارد که
78
00:02:24,879 –> 00:02:26,319
در آن استثنا رخ داده است
79
00:02:26,319 –> 00:02:28,640
، هرگز اجرا نمی شود و به
80
00:02:28,640 –> 00:02:30,080
همین دلیل است که کنترل
81
00:02:30,080 –> 00:02:31,120
استثناها
82
00:02:31,120 –> 00:02:34,080
برای رسیدگی به این استثنا بسیار مهم است، من
83
00:02:34,080 –> 00:02:35,599
باید بلوک کد را قرار دهم که در واقع
84
00:02:35,599 –> 00:02:36,560
باعث ایجاد این خطا
85
00:02:36,560 –> 00:02:39,360
در یک بلوک try و قبول می شود چگونه می
86
00:02:39,360 –> 00:02:39,840
توانم این کار را انجام دهم این
87
00:02:39,840 –> 00:02:41,840
است که می دانم که این بلوک کد است
88
00:02:41,840 –> 00:02:43,519
که باعث خطا می شود بنابراین کل این
89
00:02:43,519 –> 00:02:45,040
بلوک کد آن را
90
00:02:45,040 –> 00:02:47,120
در داخل تلاش خود قرار می دهم و می پذیرم بنابراین فقط
91
00:02:47,120 –> 00:02:48,160
سعی کنید بنویسید
92
00:02:48,160 –> 00:02:51,200
و من تورفتگی را انجام میدهم و سپس فقط
93
00:02:51,200 –> 00:02:51,760
94
00:02:51,760 –> 00:02:54,800
پذیرش را تایپ میکنم و نام استثنا
95
00:02:54,800 –> 00:02:56,959
را میزنم تا بدانم استثنایی که
96
00:02:56,959 –> 00:02:58,080
این بار دریافت
97
00:02:58,080 –> 00:03:00,080
میکنم این خطای نوع است، بنابراین من فقط
98
00:03:00,080 –> 00:03:01,200
آن
99
00:03:01,200 –> 00:03:04,239
خطای نوع را ذکر کردم و سپس میخواهم برای برگرداندن یک
100
00:03:04,239 –> 00:03:06,159
مقدار متفاوت، بنابراین به جای مجموع
101
00:03:06,159 –> 00:03:08,480
دو عدد که می خواهم برگردانم، یک پیام بگویم،
102
00:03:08,480 –> 00:03:12,879
بنابراین می گویم
103
00:03:12,879 –> 00:03:16,400
شماره نامعتبر را برگرداند، اوکی
104
00:03:16,400 –> 00:03:19,920
پس حالا اجازه دهید این برنامه را
105
00:03:19,920 –> 00:03:21,840
اجرا کنم وقتی این برنامه را اجرا می کنم، می
106
00:03:21,840 –> 00:03:24,720
بینید که در حال چاپ 3 است. و 15 که
107
00:03:24,720 –> 00:03:26,799
از دو فراخوانی اول تابع و
108
00:03:26,799 –> 00:03:28,080
فراخوانی تابع سوم است،
109
00:03:28,080 –> 00:03:30,159
من 7 و a را پاس می کنم، اما همچنان
110
00:03:30,159 –> 00:03:31,840
شماره نامعتبر را برمی گرداند و در واقع
111
00:03:31,840 –> 00:03:32,239
112
00:03:32,239 –> 00:03:34,480
خطایی ایجاد نمی کند، زیرا اتفاقی که می افتد این است
113
00:03:34,480 –> 00:03:36,159
که وقتی این فراخوانی تابع اتفاق می افتد
114
00:03:36,159 –> 00:03:38,720
، این را به عدد اضافه می کند. 7 و
115
00:03:38,720 –> 00:03:40,319
بنابراین این یک خطا ایجاد می کند
116
00:03:40,319 –> 00:03:42,000
زیرا من کل این خط را
117
00:03:42,000 –> 00:03:43,519
در داخل try خود قرار داده ام
118
00:03:43,519 –> 00:03:45,599
و به محض اینکه خطایی وجود داشته باشد
119
00:03:45,599 –> 00:03:47,040
120
00:03:47,040 –> 00:03:49,280
خطای خارج از آن پرتاب نمی شود اما
121
00:03:49,280 –> 00:03:50,080
122
00:03:50,080 –> 00:03:52,319
به این بلوک پذیرش می رود و در داخل
123
00:03:52,319 –> 00:03:53,439
این می رود. قبول بلوک
124
00:03:53,439 –> 00:03:54,959
من خطای نوع را نوشته ام و خطایی
125
00:03:54,959 –> 00:03:56,400
که در واقع دریافت می کنم خطای نوع است،
126
00:03:56,400 –> 00:03:57,599
بنابراین این یکی مطابقت
127
00:03:57,599 –> 00:03:59,280
دارد بنابراین وارد این بلوک می شود و
128
00:03:59,280 –> 00:04:00,879
هر آنچه را که در اینجا ذکر کرده ام برمی گرداند
129
00:04:00,879 –> 00:04:01,280
130
00:04:01,280 –> 00:04:02,799
و به همین دلیل است که
131
00:04:02,799 –> 00:04:05,040
بعد از این شماره نامعتبر را برمی گرداند. این
132
00:04:05,040 –> 00:04:05,680
کنترل به
133
00:04:05,680 –> 00:04:07,519
این خط شماره 10 برمی گردد و سپس
134
00:04:07,519 –> 00:04:08,959
خط شماره 11 را اجرا می کند که در
135
00:04:08,959 –> 00:04:11,519
آن 99.1 را اضافه می کند و 100 را در اینجا چاپ می
136
00:04:11,519 –> 00:04:13,360
کند و سپس در نهایت اجراهای
137
00:04:13,360 –> 00:04:15,360
تکمیل شده از این خط را می گوید،
138
00:04:15,360 –> 00:04:18,798
بنابراین من اینگونه برنامه خود را تغییر دادم
139
00:04:18,798 –> 00:04:21,120
تا استثنا را مدیریت کند، اما بیایید بگوییم
140
00:04:21,120 –> 00:04:23,280
خطا در واقع خطای تایپ نبود،
141
00:04:23,280 –> 00:04:25,360
ما یک نوع خطای دیگر دریافت کردیم، بنابراین بیایید به
142
00:04:25,360 –> 00:04:27,360
جای این num2 بگوییم من
143
00:04:27,360 –> 00:04:29,199
فقط این نام را به num222 تغییر می دهم
144
00:04:29,199 –> 00:04:31,440
اما پایتون نمی داند num222 چیست،
145
00:04:31,440 –> 00:04:32,720
بنابراین باید یک خطا ایجاد کند،
146
00:04:32,720 –> 00:04:36,080
بنابراین اگر این را اجرا کنم حالا
147
00:04:36,080 –> 00:04:37,520
اکنون برنامه میبینید که خطا نشان میدهد
148
00:04:37,520 –> 00:04:40,560
و این بار خطای num222
149
00:04:40,560 –> 00:04:42,560
تعریف نشده است، بنابراین با وجود اینکه ما
150
00:04:42,560 –> 00:04:44,560
این بلوک امتحان و پذیرش را برای رسیدگی به
151
00:04:44,560 –> 00:04:46,320
استثنا داریم، در واقع این را مدیریت نمیکند.
152
00:04:46,320 –> 00:04:48,000
استثنای خاص زیرا
153
00:04:48,000 –> 00:04:49,840
بلوک try و قبولی که
154
00:04:49,840 –> 00:04:51,840
در اینجا نوشتیم فقط برای رسیدگی به
155
00:04:51,840 –> 00:04:54,000
خطای نوع است، بنابراین فقط این نوع خطا
156
00:04:54,000 –> 00:04:54,960
رسیدگی می شود،
157
00:04:54,960 –> 00:04:56,400
اما ما سعی نمی کنیم
158
00:04:56,400 –> 00:04:58,160
همه انواع دیگر خطاها را مدیریت کنیم، بنابراین
159
00:04:58,160 –> 00:04:59,600
در این مورد خطای من
160
00:04:59,600 –> 00:05:01,199
خطای نامی را دریافت کردم که کنترل نمی شود
161
00:05:01,199 –> 00:05:02,720
و به همین دلیل است که اکنون یک خطا را
162
00:05:02,720 –> 00:05:04,960
در اینجا
163
00:05:04,960 –> 00:05:07,280
می اندازد تا بتوانیم این کار را انجام دهیم.
164
00:05:07,280 –> 00:05:08,639
165
00:05:08,639 –> 00:05:11,759
166
00:05:11,759 –> 00:05:15,840
من
167
00:05:15,840 –> 00:05:17,919
به جای print اجازه دهید وقتی
168
00:05:17,919 –> 00:05:20,560
این برنامه را اجرا می کنم برگردم
169
00:05:20,560 –> 00:05:22,080
خوب اجازه دهید این را پاک کنم و وقتی
170
00:05:22,080 –> 00:05:23,440
این برنامه را اجرا می کنم می بینید
171
00:05:23,440 –> 00:05:25,280
که پارامتر نامعتبر چاپ می کند بنابراین
172
00:05:25,280 –> 00:05:27,440
خطا نمی دهد اما اتفاقی که
173
00:05:27,440 –> 00:05:28,639
می افتد این است که
174
00:05:28,639 –> 00:05:31,360
اوه در اینجا یک خطا می گیرد.
175
00:05:31,360 –> 00:05:32,960
یک بلوک استثنایی
176
00:05:32,960 –> 00:05:35,039
برای رسیدگی به این نوع خطا نوشته شده است
177
00:05:35,039 –> 00:05:36,560
و خطایی که دریافت می کنیم یک
178
00:05:36,560 –> 00:05:38,639
خطای نام است و خطای نام داخلی است
179
00:05:38,639 –> 00:05:40,560
180
00:05:40,560 –> 00:05:42,160
181
00:05:42,160 –> 00:05:45,680
.
182
00:05:45,680 –> 00:05:46,320
183
00:05:46,320 –> 00:05:48,240
زمانی که خطای نوع و خطای نام را دریافت میکنیم به صراحت چگونه رفتار میکنیم،
184
00:05:48,240 –> 00:05:50,479
اما ممکن است در حال نوشتن برنامههایی
185
00:05:50,479 –> 00:05:51,360
باشیم
186
00:05:51,360 –> 00:05:53,440
که ممکن است ندانیم چه نوع
187
00:05:53,440 –> 00:05:55,440
خطایی میتواند رخ دهد، بنابراین در آن صورت
188
00:05:55,440 –> 00:05:58,479
میتوانیم از یک نوع استثنای پیشفرض استفاده کنیم که
189
00:05:58,479 –> 00:05:59,280
به عنوان یک فراخوانی میشود.
190
00:05:59,280 –> 00:06:01,199
استثنا، بنابراین چگونه میتوانیم این کار را انجام دهیم،
191
00:06:01,199 –> 00:06:02,479
فرض کنید اگر من تایپ کنم
192
00:06:02,479 –> 00:06:05,680
پذیرش استثنا و یک نام مستعار
193
00:06:05,680 –> 00:06:06,160
مانند
194
00:06:06,160 –> 00:06:10,479
e میدهم و سپس فقط
195
00:06:10,479 –> 00:06:13,919
برمیگردم، بگویم خوب است
196
00:06:13,919 –> 00:06:16,400
اگر این کار را انجام دهم و اگر اکنون
197
00:06:16,400 –> 00:06:17,919
اجرا کنم، هیچ تغییری در این برنامه ایجاد نخواهد شد،
198
00:06:17,919 –> 00:06:19,440
زیرا اتفاق می افتد این است که من خطای دریافت می کنم
199
00:06:19,440 –> 00:06:21,039
که خطای نامی است که در
200
00:06:21,039 –> 00:06:21,919
اینجا مدیریت می کند،
201
00:06:21,919 –> 00:06:24,080
اما بیایید بگوییم اگر من
202
00:06:24,080 –> 00:06:25,199
این خط را نظر داده ام
203
00:06:25,199 –> 00:06:27,600
خوب است، بنابراین وقتی این خط را نظر دادم
204
00:06:27,600 –> 00:06:30,080
اکنون وقتی می خواهم این برنامه را اجرا
205
00:06:30,080 –> 00:06:32,639
کنم، می بینید که نام
206
00:06:32,639 –> 00:06:34,960
num222 در حال چاپ است. تعریف نشده است،
207
00:06:34,960 –> 00:06:37,199
بنابراین در واقع اکنون در حال چاپ
208
00:06:37,199 –> 00:06:38,080
209
00:06:38,080 –> 00:06:40,720
این پیام
210
00:06:40,720 –> 00:06:42,560
استثنایی است
211
00:06:42,560 –> 00:06:44,560
212
00:06:44,560 –> 00:06:46,479
213
00:06:46,479 –> 00:06:48,639
214
00:06:48,639 –> 00:06:50,639
. فوراً از این
215
00:06:50,639 –> 00:06:52,639
خط به آن بلوک استثنای خاص
216
00:06:52,639 –> 00:06:54,319
که بلوک خطای نام است بروید
217
00:06:54,319 –> 00:06:56,319
و هر کاری را که در اینجا ذکر شد در
218
00:06:56,319 –> 00:06:58,000
این مورد انجام دهید، ما این را
219
00:06:58,000 –> 00:06:59,759
ذکر نکردیم، اما استثنا را ذکر کردیم، بنابراین این
220
00:06:59,759 –> 00:07:01,440
استثنا
221
00:07:01,440 –> 00:07:03,680
اساساً اکثر انواع
222
00:07:03,680 –> 00:07:05,759
خطا را کنترل می کند، بنابراین حتی اگر این نوع خطا را ذکر نکرده بودم،
223
00:07:05,759 –> 00:07:07,440
224
00:07:07,440 –> 00:07:08,960
برنامه ما همچنان میتوانست
225
00:07:08,960 –> 00:07:10,960
با استفاده از این
226
00:07:10,960 –> 00:07:12,400
استثنا، استثنا را ثبت کند، بنابراین بیایید بگوییم
227
00:07:12,400 –> 00:07:15,520
اگر این یکی را نظر بدهم
228
00:07:15,520 –> 00:07:18,639
و سپس این نام را دو به دو تغییر دهم
229
00:07:18,639 –> 00:07:22,240
تا نام مناسب را حفظ کنم، این را پاک میکنم
230
00:07:22,240 –> 00:07:22,880
231
00:07:22,880 –> 00:07:25,199
و اکنون وقتی سعی می کنم این
232
00:07:25,199 –> 00:07:26,240
برنامه را اجرا
233
00:07:26,240 –> 00:07:27,759
کنم قبلاً شماره نامعتبر چاپ می کرد
234
00:07:27,759 –> 00:07:29,280
زیرا من به طور خاص
235
00:07:29,280 –> 00:07:30,880
این خطای نوع را تعریف
236
00:07:30,880 –> 00:07:32,960
کرده بودم اما اکنون از یک استثنا استفاده کرده ام که
237
00:07:32,960 –> 00:07:34,240
مانند یک
238
00:07:34,240 –> 00:07:37,199
نوع استثنا استاندارد است
239
00:07:37,199 –> 00:07:38,240
که
240
00:07:38,240 –> 00:07:40