بنیامین
بنیامین
خواندن ۳ دقیقه·۴ سال پیش

هنر گوگل کردن پیام خطا در پایتون


هنر گوگل کردن پیام خطا
هنر گوگل کردن پیام خطا


اگر تازه برنامه نویسی رو شروع کردید و وقتی که به خطا برخورد می‌کنید به خودتون می‌گیند خب!! حالا این رو چی کارش کنم ؟ برای رفع خطا ها این طور نیست که لازم باشه همه‌ی خطا های پایتون یا هر زبان دیگه‌ای رو کامل بشناسیم در واقع اینجوریه که باید خطا ها رو درست بخونیم تا بتونیم در فرایند دیباگ کردن خیلی راحت خطا ها رو پیدا و برطرف کنیم.

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

که خطا ها به سه دسته‌ی الف: خطایی نحوی ، ب: خطایی زمان اجرا ، پ: خطا های منطقی



در این جا یه نمونه خطایی سینتکس که توست ویرایش‌گر کد قبل اجرای اون گذارش شده است
در این جا یه نمونه خطایی سینتکس که توست ویرایش‌گر کد قبل اجرای اون گذارش شده است

دسته‌ی اول، خطای نحوی

تشخیص و اصلاح این خطا ها خیلی ساده امکان پذیر است چون قبل این که بخواهیم این کد اجرا کنیم محیط توسعه‌ی کد برای ما خطایی نحوی رو مشخص می‌کنه



خطایی ریاضی تقسیم عدد غیر صفر به عدد صفر
خطایی ریاضی تقسیم عدد غیر صفر به عدد صفر

دسته‌ی دوم، خطایی زمان اجرا

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

try:
this works
except:
tell me or do this works

خب برای هندل کردن خطا هایی ممکن ما باید خطا رو تولید کنیم و با استفاده از بلاک های try & except خطا ها رو کنترل کنیم که نمونه try & except رو می‌تویند بالا ببینید و دلیل مون برای این کار اینه که برنامه حین انجام کار متوقف نشه و به کار خودش ادامه بده و همچنین کاربر بتونه خطا رو بخونه تا بتونه دیباگ کنه.

Traceback (most recent call last): File &quot<stdin>&quot, line 1, in <module> ZeroDivisionError: division by zero

تو پایتون وقتی داریم یه خطا می‌بینیم ساختار خیلی واضحی داره و ساده ترین و اصولی ترین کاری که می‌تونیم انجام بدیم اینه که داخل او Traceback ما خط اخر خطا رو سرچ کنیم که تو مثال بالا خط آخر کد ما شامل پیام ZeroDivisionError: division by zero است که خودش هم دوقسمت داره قسمت اول ZeroDivisionError که نوع خطا پیش امده رو واسه ما مشخص می‌کنه و قسمت دوم پیام division by zero متن خطا رو می‌گه.

https://docs.python.org/3/tutorial/errors.html

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

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

اگر هم با این روش به جایی نرسیدین می تونید به کد خط های قبلی داخل Traceback برگردید و قاعدتا این خطا در کتابخونه که استفاده می‌کنید نیست چون اون کتابخونه یا فریمورک قبلا تست خودش رو پس دادن پس داخل اون Traceback دنبال آخرین کد خط خودتون بگردید که فراخوانی شده


دسته‌ی سوم خطا های منطقی

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

تابع فاکتوریل که تصویر سمت راست خطای منطقی دارد
تابع فاکتوریل که تصویر سمت راست خطای منطقی دارد

تصویر بالا نمونه‌ی خطای منطقی است که فقط با باز مطالعه‌ی کد می‌توان خطا را پیدا کرد



شاید الان به خودتون بگید که همین بله و عملا راه حل همه‌ی خطا هایی برنامه نویسی همین است

ممنون که تا این جا من رو هم راهی کردید می‌تونید در جاهای مخطلف دیگری با لینک زیر ما را همراهی کنید

https://zil.ink/zinet







pythondebugبرنامه نویسیفرایند حل مشکل در کد هاپایتون
more on https://medium.com/@iambenyamin
شاید از این پست‌ها خوشتان بیاید