اگر تازه برنامه نویسی رو شروع کردید و وقتی که به خطا برخورد میکنید به خودتون میگیند خب!! حالا این رو چی کارش کنم ؟ برای رفع خطا ها این طور نیست که لازم باشه همهی خطا های پایتون یا هر زبان دیگهای رو کامل بشناسیم در واقع اینجوریه که باید خطا ها رو درست بخونیم تا بتونیم در فرایند دیباگ کردن خیلی راحت خطا ها رو پیدا و برطرف کنیم.
برای درست خوندن خطا ها در پایتون یا هر زبان دیگه باید اون ها رو دسته بندی بکنیم.
که خطا ها به سه دستهی الف: خطایی نحوی ، ب: خطایی زمان اجرا ، پ: خطا های منطقی
دستهی اول، خطای نحوی
تشخیص و اصلاح این خطا ها خیلی ساده امکان پذیر است چون قبل این که بخواهیم این کد اجرا کنیم محیط توسعهی کد برای ما خطایی نحوی رو مشخص میکنه
در این نوع خطا ها باید برنامه اجرا بشه تا بفهمیم که برنامه به مشکل برخورد میکنه. در مثال بالا ما از کاربر درخاست وارد کردن دو ورودی رو میکنیم اگر عددی که در مخرج قرار داره صفر باشه ما به خطایی ریاضی تقسیم به صفر برخورد میکنیم یا تو مثالی دیگه ما داریم با یه کتابخونه کار میکنیم که اون کتابخونه برای انجام کارش باید به یه سایتی وصل بشه اما به دلایل مختلف مثلا فیتلر بودن سایت نمیتونیم مستقیما به سایت وصل بشیم که در اون صورت ما خطای http رو دریافت میکنیم.
try:
this works
except:
tell me or do this works
خب برای هندل کردن خطا هایی ممکن ما باید خطا رو تولید کنیم و با استفاده از بلاک های try & except خطا ها رو کنترل کنیم که نمونه try & except رو میتویند بالا ببینید و دلیل مون برای این کار اینه که برنامه حین انجام کار متوقف نشه و به کار خودش ادامه بده و همچنین کاربر بتونه خطا رو بخونه تا بتونه دیباگ کنه.
Traceback (most recent call last): File "<stdin>", line 1, in <module> ZeroDivisionError: division by zero
تو پایتون وقتی داریم یه خطا میبینیم ساختار خیلی واضحی داره و ساده ترین و اصولی ترین کاری که میتونیم انجام بدیم اینه که داخل او Traceback ما خط اخر خطا رو سرچ کنیم که تو مثال بالا خط آخر کد ما شامل پیام ZeroDivisionError: division by zero است که خودش هم دوقسمت داره قسمت اول ZeroDivisionError که نوع خطا پیش امده رو واسه ما مشخص میکنه و قسمت دوم پیام division by zero متن خطا رو میگه.
برای درک بهتر پیام خطا ها میتونید قسمت هشت داکیومنت پایتون رو از این لینک بخونید
بعضی مواقع پیش آمده که Traceback ما خیلی بزرگ میشه و این به این دلیله که ما از یه کتابخونه استفاده کردیم که خود اون کتابخونه یا فریمورک از کتابخونه های دیگری استفاده میکنه و این تو در تو بودن باعث بزرگ بودن Traceback ما میشه که در این صورت همه فرقی نمیکنه باز خط آخر "پیام" خطا رو سرچ میکنیم و تقریبا همیشه داخل استکاورفلو هم جواب خیلی خوبی قرار دارن.
اگر هم با این روش به جایی نرسیدین می تونید به کد خط های قبلی داخل Traceback برگردید و قاعدتا این خطا در کتابخونه که استفاده میکنید نیست چون اون کتابخونه یا فریمورک قبلا تست خودش رو پس دادن پس داخل اون Traceback دنبال آخرین کد خط خودتون بگردید که فراخوانی شده
این نوع خطا ها رو نه با استفاده از بلاک های try & except میشه حل کرد نا با روش خطا های زمان اجرا این خطا ها رو فقط با بازخوانی کردن کدی که نوشتید میتونید برطرف کنید به عنوان مثال
تصویر بالا نمونهی خطای منطقی است که فقط با باز مطالعهی کد میتوان خطا را پیدا کرد
شاید الان به خودتون بگید که همین بله و عملا راه حل همهی خطا هایی برنامه نویسی همین است
ممنون که تا این جا من رو هم راهی کردید میتونید در جاهای مخطلف دیگری با لینک زیر ما را همراهی کنید