Python中装饰器遇AttributeError时如何实现自动重试重启?
解决方案
你的问题出在仅处理了一次异常重试——第一次捕获到AttributeError后直接调用func(),如果这次再次抛出错误,就没有后续的异常处理逻辑了。要解决多次出错的情况,需要用循环实现重复重试,同时建议设置最大重试次数避免无限循环。
示例代码(带最大重试次数)
max_retries = 3 # 设定最大重试次数 retry_count = 0 while retry_count < max_retries: try: func() break # 成功执行就跳出循环 except AttributeError: retry_count += 1 print(f'登录错误,正在重试第 {retry_count} 次...') else: # 重试次数用完仍失败时触发 print(f'已重试{max_retries}次,登录仍失败')
代码说明
- 用
while循环控制重试次数,每次失败后计数器加1 - 成功执行
func()后立即break退出循环 else分支用于处理重试耗尽仍未成功的场景- 如果无需限制重试次数,也可以改成无限循环(不推荐,可能导致程序挂起):
while True: try: func() break except AttributeError: print('登录错误,重试中...')
内容的提问来源于stack exchange,提问作者Krya
相关产品推荐
相关产品推荐

