【问题标题】:In Django/Python how to handle exception - list index out of range for empty table?在 Django/Python 中如何处理异常 - 空表的列表索引超出范围?
【发布时间】:2018-02-04 09:13:34
【问题描述】:

我的问题是当我的数据库为空时,我收到此错误

IndexError at / list index out of range

>  period = Period.objects.all()
>     try:
>         period_current = [obj for obj in period if ((obj.is_current)==True)]
>                     total_payment_period_current_dict = LeasePayment.objects.filter(payment_date__range=[period_current[0].start_date,
> period_current[0].end_date]).aggregate(Sum('amount')) ...
>         total_payment_period_current = total_payment_period_current_dict['amount__sum']
>     except ValueError:
>         raise Http404("Can't perform calculation for total_payment_period_current, check data ")

我希望我可以处理它以给出有意义的错误,但它不起作用。我能做些什么来给出有意义的错误。或者理想情况下在空表的情况下一起避免这种异常?

【问题讨论】:

    标签: python django


    【解决方案1】:

    如果您想处理此错误,那么我建议您检查列表的长度。

    try:
        period_current = [obj for obj in period if ((obj.is_current)==True)]
        if len(period_current == 0) {
           raise Http404("Can't perform calculation for total_payment_period_current, check data ") 
        }
        total_payment_period_current_dict = LeasePayment.objects.filter(payment_date__range=
                                      [period_current[0].start_date,
                    period_current[0].end_date]).aggregate(Sum('amount')) 
             total_payment_period_current = total_payment_period_current_dict['amount__sum']
         except ValueError:
             raise Http404("Can't perform calculation for total_payment_period_current, check data ")
    

    对于您的情况,这是一个错误的例外。您可能想使用IndexError 异常而不是ValueError 异常。

    except IndexError:
        raise Http404("Can't perform calculation for" +
                      "total_payment_period_current, check data ")
    

    This 的回答可能有助于您理解问题。

    【讨论】:

      猜你喜欢
      • 2012-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多