【问题标题】:Except statement with a while statement带有 while 语句的 except 语句
【发布时间】:2022-01-17 14:54:32
【问题描述】:

我遇到了这种情况:

datelist = pd.date_range(dateFrom, dateTo, dateperiods)
while i < len(datelist):
    Date=datelist[i].floor('D')
    print(f'{Date} STARTED')
    if i!=0:
       Date2=datelist[i-1].floor('D')
    else: 
       Date2=Date
    i = i + 1
    try:
        **COMPLEX AND LONG CODE THAT USE DATE AS A PARM**
    except Exception as inst:
        print(inst)
        print(f'--------elaboration for {Date} failed. stated elaboration 
 for next date--------')
        if i < len(datelist):
            Date=datelist[i].floor('D')
            print(f'--{Date} STARTED')
            globalsdatelist.append(Date)
            Date2=datelist[i-1].floor('D')
            i = i + 1
        else:
            print('request failed')
            break
        **COMPLEX AND LONG CODE THAT USE DATE AS A PARM**

我想要的是继续 except while i

【问题讨论】:

  • 将 try/except 放在循环内和 except 分支 continue。 PS:你的缩进看起来不对,你能确保代码在运行时缩进吗?
  • 不,这会简单地创建多个 while 循环。理想的方法是将循环放在外面,将 try except 放在循环里面,如果条件不正确就拦截异常并通过。
  • 你好@GPhilo,我纠正了一点缩进。抱歉麻烦,这段代码是我两周的生命,当我闭上眼睛时,我的大脑只是“自动更正”了不清楚的缩进,再次抱歉。
  • 你好@AnirudhPanchangam,我不明白你告诉我要尝试什么。我可以要求再说一遍吗?我编辑了一个更清晰的缩进,这有帮助吗
  • 当然,正如您从下面的答案中看到的那样,您需要将 while 循环放在 try except 之外,因此您将仅在一个 while 组中迭代 datelist,并且任何while 循环中发生的异常会在 except 块中捕获,但由于没有 break ,因此在满足 while 循环条件之前,它永远不会退出 while 循环。

标签: python while-loop try-catch try-except


【解决方案1】:

试试这个:

datelist = pd.date_range(dateFrom, dateTo, dateperiods)
while i < len(datelist):
  try:
    **COMPLEX AND LONG CODE THAT USE DATE AS A PARM**
  except Exception as e:
    print(e)
    #handle exception case appropriately

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-29
    • 2018-09-16
    • 2011-09-29
    • 2011-04-08
    • 2021-03-08
    • 2015-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多