2013-05-26 31 views
7

tôi có chức năng quan điểm này:django - bắt nhiều trường hợp ngoại lệ

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

nhưng nó vẫn là cho lỗi sau cho dòng vấn đề trên:

IndexError: list index out of range 

là mã tốt của tôi? tôi có thể bắt được nhiều ngoại lệ theo cách này không?

Trả lời

9

Bạn có thể bắt nhiều trường hợp ngoại lệ theo cách này

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

đẹp, làm việc như bất cứ điều gì: D cảm ơn rất nhiều – doniyor

12

Khi bạn đã này trong mã của bạn:

except Forum.DoesNotExist or IndexError: 

Nó thực sự đánh giá như thế này:

except (Forum.DoesNotExist or IndexError): 

nơi bit trong ngoặc đơn là biểu thức được đánh giá. Kể từ or trả về đầu tiên của đối số của nó nếu nó truthy (mà một lớp là), đó là thực sự tương đương với chỉ:

except Forum.DoesNotExist: 

Nếu bạn muốn thực sự bắt nhiều loại khác nhau của các ngoại lệ, bạn muốn thay sử dụng một bộ dữ liệu:

except (Forum.DoesNotExist, IndexError): 
Các vấn đề liên quan