Обработка ошибок и отладка - 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). Приложение не упадет, даже если платформа пользователя окажется полностью несовместимой: оно просто корректно проинформирует о невозможности запуска конкретного инструмента.