فصل ۱۲: مدیریت خطا و استثناها (Exception Handling)

""

سرفصل‌های فصل ۱۲ :

  1. خطا (Error) چیست؟
  2. انواع خطاها در پایتون
  3. استفاده از try-except
  4. استفاده از else و finally
  5. تعریف استثنای اختصاصی (Custom Exception)
  6. نکات حرفه‌ای و مثال‌های کاربردی
  7. تمرین و پروژه کوچک

۱۲.۱ معرفی خطا (Error) و استثنا (Exception)

در برنامه‌نویسی، خطا (Error) و استثنا (Exception) اتفاق‌هایی هستند که اگر مدیریت نشوند، باعث توقف ناگهانی برنامه می‌شوند.
مثال ساده:

print(5 / 0)

خروجی:

ZeroDivisionError: division by zero

این خطا مانع ادامه اجرای برنامه می‌شود.


۱۲.۲ انواع خطاها

  • SyntaxError: اشتباه تایپی/دستور زبانی
  if True
      print("Hello")  # SyntaxError به خاطر نبود : در شرط
  • NameError: استفاده از متغیری که تعریف نشده
  print(x)  # NameError: name 'x' is not defined
  • TypeError: نوع داده اشتباه
  print("5" + 6)  # TypeError چون نمی‌توان رشته و عدد را جمع کرد
  • ZeroDivisionError: تقسیم بر صفر
  print(10/0)
  • ValueError: مقدار نامعتبر
  int("hello")  # نمی‌شود کلمه را به عدد تبدیل کرد

۱۲.۳ مدیریت خطا با try-except

try:
    n = int(input("یک عدد وارد کن: "))
    print(10 / n)
except ZeroDivisionError:
    print("نمی‌توان بر صفر تقسیم کرد!")
except ValueError:
    print("فقط عدد صحیح وارد کن!")

توضیح:

  • فقط کد داخل try اجرا می‌شود.
  • اگر خطایی رخ دهد، اجرای except مرتبط شروع می‌شود.

۱۲.۴ استفاده از else و finally

  • else: اگر خطا نباشد اجرا می‌شود.
  • finally: همیشه اجرا می‌شود (حتی اگر خطا باشد یا نه).
try:
    file = open("data.txt", "r")
except FileNotFoundError:
    print("فایل پیدا نشد.")
else:
    print("فایل با موفقیت باز شد.")
    file.close()
finally:
    print("به پایان رسید.")

۱۲.۵ تعریف خطای شخصی‌سازی شده (Custom Exception)

گاهی لازم است خودمان استثنای خاص تعریف کنیم:

class MyError(Exception):
    pass

try:
    raise MyError("یه خطای سفارشی!")
except MyError as e:
    print("خطا:", e)

۱۲.۶ نکات حرفه‌ای

  • همیشه سعی کن فقط خطای مشخص را مدیریت کنی نه همه‌ی خطاها (generic except اشتباه است).
  • پیام کاربرپسند و قابل فهم بنویس.

نمونه بد:

try:
    # کد
except:
    print("یه خطا رخ داد!")  # نمی‌فهمی مشکل چی بوده

۱۲.۷ تمرین کوچک

یک برنامه بنویس که از کاربر دو عدد بگیرد، تقسیم کند و با مدیریت خطا پیغام مناسب بدهد.

محمد وب‌سایت

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *