آشنایی با ابزار Try...Except در پایتون

python try except tutorial
20 آبان 1403

یکی از قابلیت‌های مهم و کاربردی در پایتون، استفاده از بلاک‌های try و except می‌باشد که برای مدیریت خطاها استفاده می‌شود. در پروژه‌های واقعی، این ابزار به ما کمک می‌کند تا برنامه‌مان به طور پیش‌بینی شده و روان اجرا شود حتی اگر کاربر داده نادرستی را وارد کند یا اطلاعاتی که به دنبال آن هستیم موجود نباشد.

فرض کنید در حال نوشتن یک برنامه برای دریافت ورودی اعداد از کاربر هستید. حتما مواجه شدن با خطایی که باعث توقف برنامه شود اگر کاربر به اشتباه یک رشته یا کاراکتر بجای عدد وارد کند، ناامیدکننده است. اینجاست که try...except وارد عمل می‌شود و ما را قادر می‌سازد که خطا را تشخیص داده و به سادگی مدیریت کنیم تا برنامه به کار خود ادامه دهد.

نه تنها try...except به ما در مدیریت خطاها کمک می‌کند، بلکه قابلیت‌هایی همچون else و finally هم وجود دارد که می‌توانند برای مدیریت بخش‌های مختلف اجرای برنامه براساس وقوع یا عدم وقوع خطاها استفاده شوند.

به عنوان مثال، می‌توانیم کدی بنویسیم که در صورت وقوع خطا، پیام خطا چاپ شده و در صورت عدم وقوع آن، بخش دیگری از کد اجرا شود تا تجربه کاربری بدون هیچ مشکلی باشد.

ابزارهای مدیریت خطا در پایتون نه تنها کد شما را محکم‌تر و قابل اعتمادتر می‌سازد، بلکه درک بهتری از نوع و مکان خطاها نیز به شما می‌دهند تا بتوانید آن‌ها را در آینده بهتر مدیریت کنید.

try:
number = int(input("Enter a number: "))
print(f"You entered: {number}")
except ValueError:
print("That was not a valid number!")

توضیحات خط به خط کد:

try:
در این خط آغاز بلاک try را داریم که به پایتون می‌گوید کدی که ممکن است خطا ایجاد کند در اینجا قرار دارد.

number = int(input("Enter a number: "))
از کاربر یک ورودی گرفته و تلاش می‌کند آن‌را به یک عدد صحیح تبدیل کند.

print(f"You entered: {number}")
در صورت موفقیت‌آمیز بودن تبدیل، عدد وارد شده را چاپ می‌کند.

except ValueError:
این بخش در صورتی اجرا می‌شود که خطای ValueError رخ دهد، یعنی کاربر چیزی غیر از عدد وارد کند.

print("That was not a valid number!")
در این خط، پیامی برای کاربر چاپ می‌شود تا به او اطلاع داده شود که ورودی غیر معتبر بوده است.

سوالات متداول

؟

چرا باید از try...except استفاده کنیم؟

؟

آیا فقط می‌توانیم یک نوع خطا را بگیریم؟

؟

می‌توانیم همزمان از else و finally استفاده کنیم؟