tgoop.com/pyHints/56
Last Update:
مشکل اصلی استفاده از except Exception as ex:
که دوستان توی کامنت اشاره کردند.
اصطلاحا به این روش میگن Broader Approach
مسئله اینه که توی کد بالا من با ارور هیچکاری نمیکنم (اما توی این شرایط هم broader approach
اشتباه هست) ولی فرض کنید شما باید این موارد رو لاگ بندازید. در این شرایط exception handle
شما به درد نمیخوره احتمالا لاگ هم همینطور چون کسی اروری نمیبینه که بخواد لاگ فایل رو بخونه (حتی اگر توی لاگ جزئیات بیشتری هم نوشته شده باشه)
منبع بسیاری از BUG های مخفی همین مورد هست.
قبل از اینکه راه حل رو بگم ی موضوع دیگه برای تازهکارها اشاره کنم (شوخی و روشی برای ایستگاه کردن junior developer
ها بوده البته کمتر دیده میشه دیگه ولی ی زمان تو دانشگاها خیلی زیاد بود بخصوص خارج از ایران) شاید بخاطر اینکه دیگه این مدل کد استفاده نمیشه
ی مدل دیگه exception
داریم که اصطلاحا بهش میگن :
naked exception
از همینجا شاید متوجه شدید دیگه؛ 😂😂
نوع تعریفش اینطوری هست :except:
قبلا که خیلی مد بود استفاده ازین مورد و هنوز کلمه nude
انقدر جاافتاده نبود برای ایستگاه کردن دانشجوهای سال پایینی استفاده میشد (بینالمللی)
طرف به ارور میخورد بهش میگفتن ؛ naked ات رو بده تا بگم (خیلی وقتا کار به جاهای باریک میرسید مراقب باشید خلاصه 😅😅😅)
ازین ۲ مدل هیچوقت استفاده نکنید که یا BUG مخفی میخورید یا خدایی نکرده ایستگاه میشید.
راه حل کد بالا :
۲ تا Exception
جدا بنویسید :except IndexError as ex:
و اگر قرار هست TypeError هم silent کنید در ادامهاش except TypeError as ex:
یا حتی ادغام هر ۲ : except (IndexError, TypeError) as ex:
BY Python Hints

Share with your friend now:
tgoop.com/pyHints/56