Check

Контекстный менеджер для логирования ошибок

Python Middle Яндекс 01.01.2025
Реализуйте контекстный менеджер `ErrorLogger`, который принимает путь к лог-файлу. При выходе из блока `with` он должен: 1. Если исключения не произошло — ничего не делать. 2. Если произошло исключение — записать текст исключения в файл и **проглотить** его (не пробрасывать дальше). **Пример:** ```python with ErrorLogger("errors.log"): 1 / 0 # программа не падает, а запись об ошибке появляется в файле ```
Ответы
Решение 1
```python import traceback class ErrorLogger: def __init__(self, path: str): self.path = path def __enter__(self): return self def __exit__(self, exc_type, exc_val, exc_tb): if exc_type is None: return False # всё ок, ничего не делаем # пишем стек в файл with open(self.path, "a", encoding="utf-8") as f: f.write("".join(traceback.format_exception(exc_type, exc_val, exc_tb))) f.write("\n") return True # исключение обработано, гасим его ```