خطاها و استثناهای توکار در برنامه نویسی پایتون

4 سال پیش
خطاها و استثناهای توکار در برنامه نویسی پایتون

خطاها و استثناهای توکار در برنامه نویسی پایتون

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

پیشنهاد ویژه : پکیج آموزش طراحی وب سایت با پایتون

ما می توانیم هنگام نوشتن یک برنامه اشتباهات خاصی داشته باشیم که هنگام اجرای آن منجر به خطا شود. برنامه پایتون به محض مواجه شدن با خطای بدون کنترل خاتمه می یابد. این خطاها را می توان به طور کلی در دو کلاس طبقه بندی کرد:

  • خطاهای نحوی
  • خطاهای منطقی (استثنائات)

 

خطاهای نحوی پایتون

خطای ناشی از عدم رعایت ساختار مناسب (نحو) زبان، خطای نحوی یا خطای تجزیه نامیده می شود.

بیایید به  مثال زیر نگاهی بیندازیم:

>>> if a < 3
  File "<interactive input>", line 1
    if a < 3
           ^
SyntaxError: invalid syntax

 

همانطور که در مثال نشان داده شده است، می توانیم متوجه شویم که یک دو نقطه در دستور if وجود ندارد. که تجزیه گر با خطای نحوی مواجه شده است.

 

خطاهای منطقی در پایتون (موارد استثنا)

خطاهایی که در زمان اجرا (پس از قبولی در آزمون نحو) رخ می دهند را استثنا یا خطاهای منطقی می نامند.

به عنوان مثال، وقتی می خواهیم فایلی را باز کنیم (برای خواندن) که وجود ندارد (FileNotFoundError)، یا سعی کنیم یک عدد را بر صفر تقسیم کنیم (ZeroDivisionError) یا ماژولی را که وجود ندارد (ImportError) وارد کنیم، رخ می دهد.

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

بیایید ببینیم که پایتون چگونه با این خطاها برخورد می کند:

>>> 1 / 0
Traceback (most recent call last):
 File "<string>", line 301, in runcode
 File "<interactive input>", line 1, in <module>
ZeroDivisionError: division by zero

>>> open("imaginary.txt")
Traceback (most recent call last):
 File "<string>", line 301, in runcode
 File "<interactive input>", line 1, in <module>
FileNotFoundError: [Errno 2] No such file or directory: 'imaginary.txt'

 

استثناهای توکار در پایتون

عملیات غیرقانونی می تواند موارد استثنایی را ایجاد کند. استثناهای توکار زیادی در پایتون وجود دارد که با بروز خطاهای مربوطه مطرح می شوند. ما می توانیم تمام استثناهای توکار را با استفاده از تابع توکار ()local به صورت زیر مشاهده کنیم:

print(dir(locals()['__builtins__']))

 

locals () [‘__ builtins__’] ماژولی از استثناها، توابع و ویژگی های توکار را برمی گرداند. dir به ما اجازه می دهد تا این ویژگی ها را به عنوان رشته لیست کنیم.

برخی از استثناهای توکار در برنامه نویسی پایتون همراه با خطایی که باعث آنها شده است در زیر لیست شده است:

استثنا دلیل خطا
AssertionError زمانی رخ می دهد که دستور assert شکست بخورد.
AttributeError زمانی رخ می دهد که ارجاع با شکست مواجه شود
EOFError زمانی رخ می دهد که تابع ()input شرایط end-of-file به وقوع می ‌پیوندد.
FloatingPointError زمانی رخ می دهد که عملیات ممیز شناور با خطا مواجه شود.
GeneratorExit زمانی رخ می دهد که متد ()close فراخوانی می‌شود
ImportError زمانی رخ می دهد که ماژول Import یافت نشود..
IndexError زمانی رخ می دهد که اندیس یک توالی خارج از دامنه باشد.
KeyError زمانی رخ می دهد که یک کلید در دیکشنری یافت نشود.
KeyboardInterrupt زمانی رخ می دهد که کاربر کلید وقفه را بزند (کلیدهای ترکیبی Ctrl+C یا Delete).
MemoryError زمانی رخ می دهد که یک عملیات با کمبود حافظه مواجه شود.
NameError زمانی رخ می دهد که یک متغیر در دامنه محلی یا سراسری یافت نشود.
NotImplementedError توسط متدهای انتزاعی رخ می دهد.
OSError زمانی رخ می دهد که سیستم با خطاهای مرتبط با سیستم ‌عامل مواجه شود.
OverflowError زمانی رخ می دهد که نتیجه یک عملیات بزرگ ‌تر از آنچه باشد که نمایش داده می‌شود.
ReferenceError زمانی رخ می دهد که یک پروکسی ارجاع ضعیف (Weak Reference Proxy) برای دسترسی به مرجع بازیافت حافظه مورد استفاده قرار می‌گیرد.
RuntimeError زمانی رخ می دهد که خطا در هیچ یک از دسته ‌های دیگر قرار نگیرد.
StopIteration توسط تابع ()next برای نشان دادن آنکه عنصر دیگری برای بازگرداندن توسط تکرارگر وجود ندارد، نمایش داده می ‌شود.
SyntaxError توسط تجزیه کننده و زمانی رخ می دهد که خطای نحو اتفاق بیفتد.
IndentationError زمانی رخ می دهد که دندانه ‌گذاری غلطی انجام شده باشد.
TabError زمانی رخ می دهد که دندانه ‌گذاری شامل تب ‌ها و فاصله‌ های ناسازگار باشد.
SystemError زمانی رخ می دهد که مفسر خطای داخلی را شناسایی می ‌کند.
SystemExit به وسیله تابع sys.exit()‎ به وقوع می ‌پیوندد
TypeError زمانی رخ می دهد که یک تابع یا عملیات روی یک شی از نوع غلط اعمال شود.
UnboundLocalError زمانی رخ می دهد که ارجاع برای متغیرهای محلی در تابع یا متد انجام شود، اما هیچ مقداری به آن متغیر مقید نشده باشد.
UnicodeError زمانی رخ می دهد که خطای رمزنگاری یا رمزگشایی مرتبط با یونیکد به وقوع می ‌پیوندد.
UnicodeEncodeError زمانی رخ می دهد که در طول رمزنگاری، خطاهای مرتبط با یونیکد به وقوع بپیوندد
UnicodeDecodeError زمانی رخ می دهد که در طول رمزگشایی، خطاهای مرتبط با یونیکد به وقوع بپیوندند.
UnicodeTranslateError زمانی رخ می دهد که در طول ترجمه، خطاهای مرتبط با یونیکد به وقوع بپیوندند.
ValueError زمانی رخ می دهد که یک تابع، آرگومان از نوع درست اما با مقدار نامناسب را دریافت کند.
ZeroDivisionError زمانی رخ می دهد که دومین عملوند از تقسیم یا عملیات ماژول برابر با صفر باشد.

در صورت نیاز، می توانیم استثناهای خود را در پایتون نیز تعریف کنیم.

ما می توانیم این استثناهای توکار و تعریف شده توسط کاربر را با استفاده از دستوراتtryexceptو finally در پایتون مدیریت کنیم.

منبع.

لیست جلسات قبل آموزش برنامه نویسی پایتون

  1. آموزش نصب و اجرای برنامه نویسی پایتون
  2. کلیدواژه ها و شناسه های برنامه نویسی پایتون
  3. دستورات، تورفتگی ها و کامنت ها در برنامه نویسی پایتون
  4. متغیرها، ثابت ها و لیترال ها در برنامه نویسی پایتون 
  5. انواع داده ها در برنامه نویسی پایتون
  6. تبدیل نوع در برنامه نویسی پایتون
  7. ورودی، خروجی و وارد کردن در برنامه نویسی پایتون
  8. عملگرها در برنامه نویسی پایتون
  9. نام و دامنه در برنامه نویسی پایتون
  10. دستور شرطی if…else در برنامه نویسی پایتون
  11. حلقه for در برنامه نویسی پایتون
  12. حلقه while در برنامه نویسی پایتون
  13. دستورات break و continue در برنامه نویسی پایتون
  14. دستور pass در برنامه نویسی پایتون
  15. توابع در برنامه نویسی پایتون
  16. آرگومان تابع در برنامه نویسی پایتون
  17. تابع بازگشتی در برنامه نویسی پایتون
  18. تابع بی نام/ تابع لامبدا در برنامه نویسی پایتون
  19. متغیرهای سراسری، محلی و غیر محلی در برنامه نویسی پایتون
  20. کلیدواژه global در برنامه نویسی پایتون
  21. ماژول های برنامه نویسی پایتون
  22. پکیج ها در برنامه نویسی پایتون
  23. اعداد و تبدیل نوع داده در برنامه نویسی پایتون 
  24. لیست در برنامه نویسی پایتون
  25. تاپل در برنامه نویسی پایتون 
  26. رشته ها در برنامه نویسی پایتون
  27. مجموعه ها در برنامه نویسی پایتون
  28. دیکشنری در برنامه نویسی پایتون
  29. عملیات ورودی/خروجی در برنامه نویسی پایتون 
  30. دایرکتوری و مدیریت فایل ها در برنامه نویسی پایتون
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه