¿Qué hay de malo en usar un ‘excepto’?

Intenté hacer una función para verificar si una imagen se muestra en la pantalla usando PyAutoGui y se me ocurrió esto:

def check_image_on_screen(image): try: pyautogui.locateCenterOnScreen(image) return True except: return False 

Y funciona bien, pero PyCharm me dice que no debería irme except desnudo. ¿Cuál es el problema con dejarlo así? ¿Hay una manera más apropiada de crear la misma función?

Bare, except que detectará las excepciones que casi con certeza no querrá atrapar, incluyendo KeyboardInterrupt (el usuario que presiona Ctrl + C) y errores generados por Python como SystemExit

Si no tiene una excepción específica que está esperando, al menos except Exception , que es el tipo base para todas las excepciones “regulares”.


Dicho esto: utiliza los bloques except para recuperarse de estados de falla conocidos. Un estado de falla desconocido generalmente es irrecuperable, y es un comportamiento apropiado para salir fatalmente en esos estados, que es lo que el intérprete de Python hace naturalmente con una excepción no detectada.

Capture todo lo que sabe cómo manejar y deje que el rest se propague en la stack de llamadas para ver si otra cosa puede manejarlo. En este caso, el error que está esperando (según los documentos ) es pyautogui.ImageNotFoundException

Básicamente, no estás aprovechando el lenguaje para ayudarte a encontrar problemas. Si usó except Exception as ex: podría hacer algo como registrar la excepción y saber exactamente qué sucedió.