2013-05-26 22 views
7

yakalamak birden istisnalar:django - Bu İzleme sahip

def forum(request): 
qs = Forum.objects.all() 
try: 
    f = Forum.objects.filter().order_by('-id')[0] <------------problem 
    return render_to_response("forum.html",{'qs':qs,'f':f},context_instance=RequestContext(request)) 
except Forum.DoesNotExist or IndexError: 
    return render_to_response("forum.html",{'qs':qs},context_instance=RequestContext(request)) 

ama yine yukarıdaki sorunun hattı için aşağıdaki hatayı veriyor: kodum ince

IndexError: list index out of range 

mı? Bu şekilde birden fazla istisnai yakalayabilir miyim?

except Forum.DoesNotExist or IndexError: 

Aslında bu şekilde değerlendirilen oluyor:

cevap

9

Sen

try: 
    ... 
except (Forum.DoesNotExist, IndexError) as e: 
    ... 
+0

güzel hoş, her şey gibi çalışıyor: D çok teşekkürler – doniyor

12

bu kodunuzda Eğer sonra Bu şekilde birden fazla istisna yakalamak

except (Forum.DoesNotExist or IndexError): 

bit Parantez içinde değerlendirilen bir ifadedir. (bir sınıf olan) truthy ise or Bağımsız değişkenlerinin ilk döndürür beri, yani sadece aslında eşdeğer:

except Forum.DoesNotExist: 

aslında istisnalar birden fazla farklı türde yakalamak istiyorsanız, bunun yerine ediyorum Bir tuple kullanın:

except (Forum.DoesNotExist, IndexError):