خطاها و استثناهای توکار در برنامه نویسی پایتون
خطاها و استثناهای توکار در برنامه نویسی پایتون
در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، با انواع مختلف خطاها و استثناهای توکار در برنامه نویسی پایتون تعبیه شده است، آشنا خواهید شد. آنها هر زمان که مفسر پایتون با خطایی روبرو می شود، مطرح می شوند.
پیشنهاد ویژه : پکیج آموزش طراحی وب سایت با پایتون
ما می توانیم هنگام نوشتن یک برنامه اشتباهات خاصی داشته باشیم که هنگام اجرای آن منجر به خطا شود. برنامه پایتون به محض مواجه شدن با خطای بدون کنترل خاتمه می یابد. این خطاها را می توان به طور کلی در دو کلاس طبقه بندی کرد:
- خطاهای نحوی
- خطاهای منطقی (استثنائات)
خطاهای نحوی پایتون
خطای ناشی از عدم رعایت ساختار مناسب (نحو) زبان، خطای نحوی یا خطای تجزیه نامیده می شود.
بیایید به مثال زیر نگاهی بیندازیم:
1 2 3 4 5 |
>>> if a < 3 File "<interactive input>", line 1 if a < 3 ^ SyntaxError: invalid syntax |
همانطور که در مثال نشان داده شده است، می توانیم متوجه شویم که یک دو نقطه در دستور if وجود ندارد. که تجزیه گر با خطای نحوی مواجه شده است.
خطاهای منطقی در پایتون (موارد استثنا)
خطاهایی که در زمان اجرا (پس از قبولی در آزمون نحو) رخ می دهند را استثنا یا خطاهای منطقی می نامند.
به عنوان مثال، وقتی می خواهیم فایلی را باز کنیم (برای خواندن) که وجود ندارد (FileNotFoundError)، یا سعی کنیم یک عدد را بر صفر تقسیم کنیم (ZeroDivisionError) یا ماژولی را که وجود ندارد (ImportError) وارد کنیم، رخ می دهد.
هنگامی که این نوع خطاها در زمان اجرا رخ دهد، پایتون یک شی استثنا ایجاد می کند. اگر به درستی کنترل نشود، پایتون جزئیات در مورد چرایی بروز آن خطا چاپ می کند.
بیایید ببینیم که پایتون چگونه با این خطاها برخورد می کند:
1 2 3 4 5 6 7 8 9 10 11 |
>>> 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 به صورت زیر مشاهده کنیم:
1 |
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 |
زمانی رخ می دهد که دومین عملوند از تقسیم یا عملیات ماژول برابر با صفر باشد. |
در صورت نیاز، می توانیم استثناهای خود را در پایتون نیز تعریف کنیم.
ما می توانیم این استثناهای توکار و تعریف شده توسط کاربر را با استفاده از دستوراتtry
, exceptو finally
در پایتون مدیریت کنیم.
لیست جلسات قبل آموزش برنامه نویسی پایتون
- آموزش نصب و اجرای برنامه نویسی پایتون
- کلیدواژه ها و شناسه های برنامه نویسی پایتون
- دستورات، تورفتگی ها و کامنت ها در برنامه نویسی پایتون
- متغیرها، ثابت ها و لیترال ها در برنامه نویسی پایتون
- انواع داده ها در برنامه نویسی پایتون
- تبدیل نوع در برنامه نویسی پایتون
- ورودی، خروجی و وارد کردن در برنامه نویسی پایتون
- عملگرها در برنامه نویسی پایتون
- نام و دامنه در برنامه نویسی پایتون
- دستور شرطی if…else در برنامه نویسی پایتون
- حلقه for در برنامه نویسی پایتون
- حلقه while در برنامه نویسی پایتون
- دستورات break و continue در برنامه نویسی پایتون
- دستور pass در برنامه نویسی پایتون
- توابع در برنامه نویسی پایتون
- آرگومان تابع در برنامه نویسی پایتون
- تابع بازگشتی در برنامه نویسی پایتون
- تابع بی نام/ تابع لامبدا در برنامه نویسی پایتون
- متغیرهای سراسری، محلی و غیر محلی در برنامه نویسی پایتون
- کلیدواژه global در برنامه نویسی پایتون
- ماژول های برنامه نویسی پایتون
- پکیج ها در برنامه نویسی پایتون
- اعداد و تبدیل نوع داده در برنامه نویسی پایتون
- لیست در برنامه نویسی پایتون
- تاپل در برنامه نویسی پایتون
- رشته ها در برنامه نویسی پایتون
- مجموعه ها در برنامه نویسی پایتون
- دیکشنری در برنامه نویسی پایتون
- عملیات ورودی/خروجی در برنامه نویسی پایتون
- دایرکتوری و مدیریت فایل ها در برنامه نویسی پایتون
دیدگاه شما