首页 > 解决方案 > 用装饰器捕获异常并继续

问题描述

我正在尝试在装饰器函数中记录和处理异常,然后继续执行代码:

import asyncio
import logging
from functools import wraps

log = logging.getLogger(__name__)


def logger(func):
    async def exception_handler(*arg, **kwargs):
        try:
            await func(*arg, **kwargs)
        except Exception as err:
            log.error(f"Exception occured: {err}")
            # Send log to external system
    return exception_handler


@logger
async def bad_division(dividend, divisors):
    for divisor in divisors:
        print(dividend / divisor)
    print("How do I continue?")


if __name__ == '__main__':
    dividend  = 10
    divisors = [2, 0, 4, 6, 8, 0]
    asyncio.run(bad_division(dividend, divisors))

for loop是否可以在不换行print(dividend / divisor)的情况下继续迭代try catch

标签: pythonexceptionloggingdecorator

解决方案


推荐阅读