python - 用装饰器捕获异常并继续
问题描述
我正在尝试在装饰器函数中记录和处理异常,然后继续执行代码:
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
?
解决方案
推荐阅读
- angular - Ionic 4 / Angular 7 按钮在 Google Maps Marker InfoWindow 中工作
- python - 如何解析具有无限字典和列表的复杂列表
- android - 视图持有者中的 MVVM 停止倒计时计时器
- oracle - 在 oracle 中删除 set null 不起作用
- amazon-web-services - 使用 AWS Amplify Authentication 模块检查是否在 aws cognito 中验证了电子邮件
- jquery - 单选按钮正在工作,但在视觉上未选中。谁能解释如何修复它?
- python - 为什么删除张量中的一维会导致 InvalidArgumentError:矩阵大小不兼容?
- r - how to remove error replacement has length zero in R
- windows - golang tcp listen window
- c - 模拟命令行输入