1 day 5 hours 59 minutes مورد تا پایان باقی مانده است.
-
مسائل پایه 0
-
درس1.1
-
درس1.2
-
درس1.3
-
درس1.4
-
-
کنترل ساختار 0
-
درس2.1
-
درس2.2
-
درس2.3
-
درس2.4
-
درس2.5
-
درس2.6
-
درس2.7
-
درس2.8
-
درس2.9
-
درس2.10
-
-
توابع و ماژول 0
-
درس3.1
-
درس3.2
-
درس3.3
-
درس3.4
-
درس3.5
-
-
استثنا ها و فایل 0
-
درس4.1
-
درس4.2
-
درس4.3
-
درس4.4
-
درس4.5
-
درس4.6
-
درس4.7
-
درس4.8
-
-
مدل های دیگر 0
-
درس5.1
-
درس5.2
-
درس5.3
-
درس5.4
-
درس5.5
-
درس5.6
-
درس5.7
-
درس5.8
-
درس5.9
-
-
برنامه نویسی تابع گرا 0
-
درس6.1
-
درس6.2
-
درس6.3
-
درس6.4
-
درس6.5
-
درس6.6
-
درس6.7
-
درس6.8
-
-
برنامه نویسی شئ گرا 0
-
درس7.1
-
درس7.2
-
درس7.3
-
درس7.4
-
درس7.5
-
درس7.6
-
درس7.7
-
-
برنامه نویسی Multi thread و Multi process 0
exception و exception handeling
در قسمت های گذشته با exception ها به طور غیر مستقیم برخورد داشته اید. این مدل زمانی اتفاق میافتد که عملکردی به خاطر ورودی اشتباه انجام شود.وقتی این حالت اتفاق میافتد همراه با اخطار برنامه کاملا متوقف می شود.
کد زیر نحوه عملکرد و خروجی یک Exception را هنگام تقسیم عددی بر صفر نشان می دهد.
num1 = 7 num2 = 0 print(num1/num2)
خروجی:
>>> ZeroDivisionError: division by zero >>>
استثنا و یا exception ها در موارد متعددی اتفاق میافتند.
چند مورد از متداول ترین آنها شمامل موارد زیر است:
ImportError:زمانی که درج ماژول به اشتباه صورت گیرد
IndexError: زمانی که لیستی با یک عدد نشانگر خارج از اعضا نشان داده شود
NameError: زمان استفاده از یک متغیر نا معلوم
SyntaxError: هنگام اشتباه در کد نویسی
TypeError: صدا زدن یک مقدار با نوع اشتباه در یک تابع
ValueError: صدا زدن یک مقدار درون تابع با نوع درست اما مقدار اشتباه
برای رسیدگی به استثنا ها، و هنگام فراخوانی یک exception، می توانید از دستور try/ exception استفاده کنید.
بلوک try حاوی کدیست که ممکن است exception را برانگیزد. اگر این exception اتفاق افتد، کد در بلوک try اجرا نمی شود و کد در بلوک except اجرا می شود. اگر هیچ خطایی رخ نداده باشد، کد در بلوک except اجرا نمی شود.
برای مثال:
try: num1 = 7 num2 = 0 print (num1 / num2) print("Done calculation") except ZeroDivisionError: print("An error occurred") print("due to zero division")
خروجی:
>>> An error occurred due to zero division >>>
نکته:در کد بالا پیغام خطا نوع exception را مشخص می کند.
Exception Handling
یک کد حاوی try می تواند چندین حالت متفاوتی داشته باشد، به جز بلوک هایی که بتواند exception های مختلف را مدیریت کند
exception چندگانه همچنین می تواند در یک تک جز به بلوک با استفاده از پرانتز قرار داده شود.
try: variable = 10 print(variable + "hello") print(variable / 2) except ZeroDivisionError: print("Divided by zero") except (ValueError, TypeError): print("Error occurred")
خروجی:
>>> Error occurred >>>
except ها می توانند بدون هیچ ساختار مشخصی نیز استفاده شوند. این ها باید به ندرت مورد استفاده قرار گیرد، زیرا می توانند اشتباهات غیرمنتظره ای را بدست آورند و اشتباهات برنامه نویسی را پنهان کنند.
مثلا:
try: word = "spam" print(word / 0) except: print("An error occurred")
خروجی:
>>> An error occurred >>>
نکته:استفاده از exception handeling بسیار کارآمد است به خصوص زمانی که ورودی از جانب کاربر اشتباه باشد.
3 نظر
سلام وقتتون بخیر و با تشکر از زحماتتون
یه سوال داشتم از حضورتون
من این دستورtry:
num1 = 5
num2 = 0
print(num1/num2)
except zerodivisionerror:
print(“its not happend”)
رو مینویسم ولی موقع run کردن این خطا رو بهم نشون میده:
Traceback (most recent call last):
File “C:\Users\M2\Desktop\mari.py”, line 4, in
print(num1/num2)
ZeroDivisionError: division by zero
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File “C:\Users\M2\Desktop\mari.py”, line 5, in
except zerodivisionerror:
NameError: name ‘zerodivisionerror’ is not defined
>>> ببخشید هرکار کردم خوانا نشد 😐
میشه راهنمایی کنین؟
مشکل توی رعایت نکردن شکل درست نوشتاری Exception هستش اگه دقت کنی بعضی حروفش بزرگ و بیشتر کوچیک هستن که باید عین همون رو بنویسی مثلا تو به جای ZeroDivisionError توی کدت نوشتی zerodivisionerror به همین خاطرم ازت ایراد میگیره
بله متوجه نشده بودم..مچکرم