Что плохого в использовании "только"?
Я попытался сделать функцию, чтобы проверить, отображается ли изображение на экране, используя PyAutoGui, и придумал это:
def check_image_on_screen(image):
try:
pyautogui.locateCenterOnScreen(image)
return True
except:
return False
И это прекрасно работает, но PyCharm говорит мне, что я не должен уходить except
голый. В чем проблема с тем, чтобы оставить это так? Есть ли более подходящий способ создания той же функции?
2 ответа
Голый except
будет ловить исключения, которые вы почти наверняка не хотите ловить, в том числе KeyboardInterrupt
(пользователь нажимает Ctrl+C) и ошибки, вызванные Python, такие как SystemExit
Если у вас нет конкретного исключения, которое вы ожидаете, по крайней мере except Exception
, который является базовым типом для всех "обычных" исключений.
Как говорится: вы используете except
блоки для восстановления из известных состояний отказа. Неизвестное состояние сбоя обычно неустранимо, и это правильное поведение для фатального выхода из этих состояний, что, естественно, делает интерпретатор Python с неперехваченным исключением.
Поймай все, что ты умеешь обрабатывать, и позволь остальным распространяться вверх по стеку вызовов, чтобы посмотреть, сможет ли что-то еще с этим справиться. В этом случае ожидаемая вами ошибка (согласно документации) pyautogui.ImageNotFoundException
По сути, вы не пользуетесь языком, чтобы помочь вам найти проблемы. Если вы использовали except Exception as ex:
Вы могли бы сделать что-то вроде журнала исключения и точно знать, что произошло.