در حال بارگذاری...

کدهای خطای Python

کدهای خطای Python نوعی استثنا هستند که زمانی رخ می‌دهند که برنامه با عملیات غیرمجاز یا نامناسب مواجه شود. درک این خطاها اهمیت زیادی دارد زیرا به توسعه‌دهندگان کمک می‌کند برنامه‌های پایدار، قابل اعتماد و بدون اشکال تولید کنند. خطاهای Python معمولاً زمانی ظاهر می‌شوند که سینتکس اشتباه باشد، نوع داده نادرست استفاده شده باشد، به منابع موجود دسترسی نداشته باشیم یا منطق برنامه دارای خطا باشد. مفاهیم کلیدی شامل سینتکس، انواع استثنا، تکنیک‌های دیباگ و مدیریت خطا است. با شناخت کدهای خطا، توسعه‌دهندگان می‌توانند سریعاً منبع مشکل را شناسایی کنند، بلوک‌های try/except مناسب را پیاده‌سازی کنند و اطلاعات خطا را در محیط تولید ثبت نمایند. این مرجع، نمای کاملی از خطاهای رایج، شرایط رخداد آن‌ها، روش‌های دیباگ و بهترین شیوه‌ها در توسعه backend ارائه می‌دهد. خواننده یاد خواهد گرفت چگونه سیستم‌های پایدار و مطمئن ایجاد کند که ریسک کرش کاهش یابد و امنیت داده تضمین شود.

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

Example

python
PYTHON Code
def process_data():
try:
# NameError: استفاده از متغیر تعریف‌نشده
print(undefined_variable)

# ZeroDivisionError: تقسیم بر صفر
result = 10 / 0

# ValueError: تبدیل نوع نامعتبر
number = int("abc")

# FileNotFoundError: فایل موجود نیست
with open("missing_file.txt", "r") as f:
content = f.read()

# AttributeError: فراخوانی متد غیرموجود
[].appendx(1)

except NameError as ne:
print(f"خطای NameError گرفته شد: {ne}")
except ZeroDivisionError as zde:
print(f"خطای ZeroDivisionError گرفته شد: {zde}")
except ValueError as ve:
print(f"خطای ValueError گرفته شد: {ve}")
except FileNotFoundError as fe:
print(f"خطای FileNotFoundError گرفته شد: {fe}")
except AttributeError as ae:
print(f"خطای AttributeError گرفته شد: {ae}")
except Exception as e:
print(f"سایر استثناها گرفته شد: {e}")
finally:
print("آزادسازی منابع و پاکسازی انجام شد.")

process_data()

📊 Comprehensive Reference

Error توضیح زمان رخ دادن مثال یادداشت‌ها
SyntaxError خطای سینتکس کد نادرست eval('x === 2') در زمان کامپایل رخ می‌دهد
IndentationError خطای تورفتگی تورفتگی نادرست if True:\nprint("Hi") زیرمجموعه SyntaxError
TabError مخلوط شدن تب و فاصله استفاده همزمان از تب و فاصله <tab> <space> print("Hi") تورفتگی یکنواخت لازم است
NameError متغیر تعریف نشده استفاده از متغیر ناموجود print(x) رایج در دیباگ
TypeError نوع نادرست عملیات با نوع نامناسب 5 + "5" تایپ دینامیک Python
ValueError مقدار نامعتبر تبدیل نوع نامناسب int("abc") ورودی بررسی شود
IndexError شاخص خارج از محدوده دسترسی به اندیس لیست خارج lst = []; lst[1] طول لیست بررسی شود
KeyError کلید موجود نیست دسترسی به کلید دیکشنری ناموجود d = {}; d['x'] استفاده از dict.get() مفید است
AttributeError ویژگی موجود نیست فراخوانی متد یا ویژگی غیرموجود [].appendx(1) نام متد بررسی شود
ZeroDivisionError تقسیم بر صفر مخرج صفر 10 / 0 مخرج بررسی شود
ImportError ماژول یافت نشد ماژول موجود نیست import missing_module نصب ماژول بررسی شود
ModuleNotFoundError ماژول یافت نشد ماژول موجود نیست import nonexist_module Python 3.6+
FileNotFoundError فایل یافت نشد فایل موجود نیست open("nofile.txt") مسیر فایل بررسی شود
IsADirectoryError انتظار فایل، دایرکتوری یافت شد open("folder") وابسته به سیستم عامل
NotADirectoryError انتظار دایرکتوری، فایل یافت شد os.listdir("file.txt") وابسته به سیستم عامل
PermissionError مجوز ناکافی عدم دسترسی به فایل open("/root/file") مجوزها بررسی شود
OSError خطای سیستم مشکل مرتبط با OS os.remove("/root/file") پایه سایر خطاها
OverflowError سرریز عددی مقدار بسیار بزرگ 2.0**10000 نادر در Python 3
RecursionError بازگشت بیش از حد تکرار بازگشتی زیاد def f(): f(); f() sys.setrecursionlimit()
MemoryError کمبود حافظه حجم زیاد داده a = 'a'*10**10 وابسته به سیستم
StopIteration اتمام iterator iterator خالی next(iter([])) custom iterator
AssertionError خطای Assertion assert False بررسی شرط
FloatingPointError خطای ممیز شناور عملیات FP نامناسب numpy.seterr(all='raise') NumPy
UnicodeError خطای رمزگذاری/رمزگشایی "ü".encode("ascii") بررسی encoding
UnicodeDecodeError خطای decode b'\xff'.decode('utf-8') خواندن فایل
UnicodeEncodeError خطای encode "ü".encode("ascii") encoding اشتباه
RecursionWarning هشدار بازگشت تکرار بازگشتی زیاد import warnings fatal نیست
DeprecationWarning هشدار منسوخ شدن استفاده از تابع قدیمی warnings.warn("deprecated") نیاز به migration
RuntimeWarning هشدار زمان اجرا مشکل احتمالی import warnings fatal نیست
FutureWarning هشدار آینده تغییرات آینده warnings.warn("future") سازگاری بررسی شود
UserWarning هشدار کاربر هشدار سفارشی warnings.warn("user") fatal نیست
PendingDeprecationWarning منسوخ شدن قریب‌الوقوع تابع به زودی منسوخ warnings.warn("pending") نادر
ResourceWarning منابع آزاد نشده فایل بسته نشده open("file") Python 3+
ArithmeticError خطای ریاضی عملیات ریاضی نادرست int("x")/0 پایه سایر خطاها
BufferError خطای بافر عملیات بافر نامعتبر memoryview(b'').release() نادر
ConnectionError خطای اتصال مشکل شبکه requests.get("bad_url") وابسته به شبکه
BrokenPipeError لوله شکسته نوشتن در pipe بسته os.write(fd, b'data') Unix
ChildProcessError خطای Child process خطای فرآیند فرزند os.waitpid(-1) نادر
EOFError پایان غیرمنتظره فایل ورودی تمام شده input() EOF ورودی خالی
EnvironmentError خطای محیط مشکل OS/محیط os.remove("/root/file") پایه OSError
GeneratorExit خروج Generator gen.close() Generators
IOError خطای I/O شکست Read/Write open("/root/file") Python 3 -> OSError
InterruptedError قطع شده System call قطع شده os.read(fd, 0) Unix
LookupError خطای جستجو جستجوی نامعتبر d['x'] پایه Lookup
ReferenceError ارجاع نامعتبر Weak ref منقضی شده import weakref نادر
RuntimeError خطای زمان اجرا raise RuntimeError() خطای عمومی
StopAsyncIteration اتمام async iterator async for Python 3.5+
SyntaxWarning هشدار سینتکس سینتکس مشکوک warnings.warn("syntax") برنامه متوقف نمی‌شود
SystemError خطای سیستم خطای داخلی Python sys._getframe(0) نادر
SystemExit خروج سیستم sys.exit() پایان برنامه
TimeoutError اتمام زمان Timeout عملیات socket.settimeout() شبکه
UnboundLocalError متغیر محلی بدون مقدار قبل از مقداردهی x=1; def f(): print(x); x=2 زیرمجموعه NameError
ZeroDivisionError تقسیم بر صفر مخرج صفر 10 / 0 مخرج بررسی شود

🧠 دانش خود را بیازمایید

آماده شروع

Test Your Knowledge

دانش خود را در مورد کدهای خطای Python بسنجید

3
سوالات
🎯
70%
برای قبولی
♾️
زمان
🔄
تلاش‌ها

📝 دستورالعمل‌ها

  • هر سوال را با دقت بخوانید
  • بهترین پاسخ را برای هر سوال انتخاب کنید
  • می‌توانید آزمون را هر چند بار که می‌خواهید تکرار کنید
  • پیشرفت شما در بالا نمایش داده می‌شود