Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Klausa `kecuali` Bare dalam Python Dianggap sebagai Amalan Buruk?
Dalam mereka bentuk fungsi untuk mengesahkan kehadiran imej pada skrin menggunakan PyAutoGui, anda menggunakan pendekatan berikut:
def check_image_on_screen(image): try: pyautogui.locateCenterOnScreen(image) return True except: return False
Sementara fungsi ini kelihatan berfungsi seperti yang dimaksudkan, PyCharm menandai 'kecuali' kosong sebagai tidak digalakkan. Ini menimbulkan kebimbangan tentang implikasi meninggalkan 'kecuali' tanpa hiasan.
A bare 'except' tanpa pandang bulu memintas semua pengecualian, walaupun yang tidak dijangka atau diingini. Pengecualian seperti KeyboardInterrupt (Ctrl C) dan ralat yang dijana Python seperti SystemExit adalah antara yang tidak sepatutnya dikendalikan dengan cara ini.
Adalah lebih baik untuk menyatakan secara eksplisit jenis pengecualian yang disediakan untuk dikendalikan oleh kod anda , sekurang-kurangnya 'Pengecualian', kelas asas untuk semua pengecualian "biasa".
Ralat 'kecuali' blok bertujuan untuk digunakan dalam memulihkan daripada senario kegagalan yang telah ditetapkan. Walau bagaimanapun, secara amnya adalah mustahil untuk pulih sepenuhnya daripada senario kegagalan yang tidak diketahui. Dalam kes sedemikian, adalah lebih baik untuk menamatkan program daripada cuba meneruskan. Ini ialah gelagat lalai penterjemah Python apabila pengecualian tidak dikendalikan.
Adalah bijak untuk hanya memerangkap pengecualian yang anda tahu cara untuk menanganinya. Pengecualian selebihnya harus dibenarkan untuk menyebarkan timbunan panggilan dengan harapan komponen lain dapat mengendalikannya. Dalam kes mengesahkan kehadiran imej, ralat yang dijangkakan (setiap dokumentasi) ialah pyautogui.ImageNotFoundException.
Berdasarkan cerapan yang disebutkan di atas, fungsi anda boleh difaktorkan semula untuk menangani kebimbangan yang dibangkitkan oleh 'kecuali' kosong:
def check_image_on_screen(image): try: pyautogui.locateCenterOnScreen(image) return True except pyautogui.ImageNotFoundException: return False
Oleh dengan menyatakan pengecualian khusus yang dimaksudkan untuk dikendalikan oleh fungsi, anda meningkatkan kebolehpercayaan dan kebolehselenggaraan kod anda.
Atas ialah kandungan terperinci Mengapa Klausa `kecuali` Bare dalam Python Dianggap sebagai Amalan Buruk?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!