Обработка ошибок и отладка - 52AnTIMateria812/Plyer GitHub Wiki
При реализации кроссплатформенного кода 50% времени уходит на обработку краевых случаев. Как мы выяснили ранее, вызов plyer.tts на "голом" (чистом) сервере Ubuntu без установленного пакета espeak или plyer.battery на станционарном ПК приведет к падению скрипта с NotImplementedError.
Декоратор @safe_execute
Чтобы не оборачивать каждую функцию demo_* в try...except, мы использовали паттерн декоратора для чистого кода. В utils.py находится реализация:
def safe_execute(func):
@wraps(func)
def wrapper(*args, **kwargs):
try:
return func(*args, **kwargs)
except NotImplementedError:
print(f"⚠️ Функция '{func.__name__}' не поддерживается на данной платформе")
return None
except Exception as e:
print(f"❌ Непредвиденная критическая ошибка в '{func.__name__}': {e}")
return None
return wrapper
Этот декоратор обеспечивает 100% стабильность работы (fault tolerance). Приложение не упадет, даже если платформа пользователя окажется полностью несовместимой: оно просто корректно проинформирует о невозможности запуска конкретного инструмента.