19 lines
500 B
Python
19 lines
500 B
Python
import asyncio
|
|
from typing import Awaitable, Callable
|
|
|
|
from core.logger import get_logger
|
|
|
|
|
|
logger = get_logger("core.error_handler")
|
|
|
|
|
|
def capture_errors(handler: Callable[..., Awaitable[None]]) -> Callable[..., Awaitable[None]]:
|
|
async def wrapper(*args, **kwargs) -> None:
|
|
try:
|
|
await handler(*args, **kwargs)
|
|
except asyncio.CancelledError:
|
|
raise
|
|
except Exception:
|
|
logger.exception("Unhandled exception in handler")
|
|
return wrapper
|