🔸 بخش اول
💠 در پست های قبلی - انواع ارور ها، بخش اول، بخش دوم، بخش سوم - با ارور هایی که در پایتون ممکنه باهاشون برخورد کنیم آشنا شدیم.
💠 حالا وقت اینه که از این مطالب استفاده کنیم تا برنامه های خودمون رو بهبود بدیم.
همونطور که مطلع هستید، مفسر زمانی که به ارور برخورد میکنه برنامه رو متوقف میکنه و process اجرایی ما از کار میوفته.
قطعا این یک معضل برای برنامهنویس هاست، اما پایتون هم مثل خیلی از زبان های دیگه برای این مشکل راهحلی ارائه داده.
این زبان با دو کلمه کلیدی
try
و except
ساختاری رو برای ما فراهم کرده که بتونیم ارور ها رو مدیریت یا هندل کنیم.ابتدا در بلوک
try
تکه خط کدی رو که ممکنه به خطا بخوره رو مینویسیم و در بلوک هم except
تکه کدی رو که میخوایم در صورت مواجه شدن به ارور اجرا بشه رو مینویسیم.بریم چند تا مثال بزنیم تا با این ساختار بیشتر آشنا بشیم.
❔ مسئله:
— برنامه ای بنویسید که از کاربر عددی را دریافت کند و یکی کمتر از آن عدد را چاپ کند و در آخر هم یک bye در پایان برنامه print کند.
روش یک - بدون استفاده از try except:
number = int(input("enter a number: ")
print(number - 1)
print("bye")
این کد تا زمانی صحیح و بدون مشکل کار میکنه که کاربر همیشه به عنوان ورودی یک عدد صحیح وارد کنه.
حالا اگر کاربر از کارکتری استفاده کنه که کلاس int انتظارش رو نداره، برنامه با ارور مواجه میشه و برنامه متوقف میشه. پس ما bye رو در خروجی نمیبینم:
ValueError: invalid literal for int() with base 10
روش دوم - با استفاده از try except:
try:
number = int(input("enter a number: "))
except:
print("the entry isn't an integer")
print("bye")
اما اینجا به محض مواجهه با ارور، برنامه پیام مناسبی به کاربر نشون میده و به کارش ادامه میده، بدون اینکه process رو متوقف کنه.
همچنین میتونید صرفا یک یا چند خطای مورد انتظار و معین رو برای تکه کد خودتون درنظر بگیرید. به این صورت که در بلوک except نوع ارور رو مینویسید و مفسر صرفا نسبت به این ارور(ها) واکنش نشون میده.
❔ مسئله:
— برنامه ای بنویسید که از کاربر عددی صحیح را دریافت کند و حاصل تقسیم 1000 بر آن را بنویسد.
جواب:
try:
number = int(input("enter a number: "))
print(1e3 / number)
except ValueError:
print("the entry isn't an integer")
در این تکه کد فقط اگر به
ValueError
برخورد کنیم برنامه واکنشنشون میده و درغیر اینصورت برنامه با ارور مواجه، و در نتیجه متوقف میشه.حالا اگه بخوایم
ZeroDivisionError
رو هم هندل کنیم چی؟ کاری نداره، اونم اضافه میکنیم:try:
number = int(input("enter a number: "))
print(1e3 / number)
except ValueError:
print("the entry isn't an integer")
except ZeroDivisionError:
print("entry cannot be zero")
تا اینجا با
try
و except
آشنا شدیم. در پست های بعدی بیشتر در مورد error handling صحبت میکنیم و با این موضوع بیشتر آشنا میشیم.🔖 #Python, #پایتون
👤 Yasin
💎 Channel: @DevelopixPython