2013-05-26 15 views
7

Ho questa funzione di visualizzazione:django - cattura più eccezioni

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)) 

ma è ancora dando seguente errore per la linea problema di cui sopra:

IndexError: list index out of range 

è il mio codice bene? posso prendere più eccezioni in questo modo?

risposta

9

Si può prendere più eccezioni in questo modo

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

bello, funziona come niente: D grazie mille – doniyor

12

quando si ha questo nel codice:

except Forum.DoesNotExist or IndexError: 

In realtà è valutato come questo:

except (Forum.DoesNotExist or IndexError): 

dove il bit tra parentesi è un'espressione valutata. Dal momento che or restituisce il primo dei suoi argomenti se si tratta di truthy (che una classe è), che in realtà è equivalente a semplice:

except Forum.DoesNotExist: 

Se si desidera catturare in realtà più tipi diversi di eccezioni, si sarebbe invece utilizzare una tupla:

except (Forum.DoesNotExist, IndexError): 
Problemi correlati