Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Klausa `kecuali` Bare dalam Python Dianggap sebagai Amalan Buruk?

Mengapa Klausa `kecuali` Bare dalam Python Dianggap sebagai Amalan Buruk?

DDD
DDDasal
2024-12-14 10:10:16914semak imbas

Why is a Bare `except` Clause in Python Considered Bad Practice?

Perils of a Bare 'except'

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.

Masalah dengan Bare 'except'

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".

A Lebih Sesuai Pendekatan

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.

Kod Disemak

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn