Tại sao lại sử dụng else trong cấu trúc try / except trong Python?

{{FormatNumbertoThousand(model.total_like)}} lượt thích
96 lượt xem
Python master

Vấn đề:

Tại sao mã phải được thực thi nếu mệnh đề try không đưa ra một exception trong cấu trúc try?

Tại sao không chỉ đơn giản là để nó làm theo try / except ở cùng một mức độ?

Giải pháp:

Khối else chỉ được thực thi nếu mã trong try không tạo ra một exception; nếu bạn đặt mã bên ngoài khối else, nó sẽ xảy ra bất kể có exception hay không. Ngoài ra, nó xảy ra trước finally, điều này nói chung là quan trọng.

Điều này thường hữu ích khi bạn có một phần cài đặt hoặc xác minh ngắn có thể bị lỗi, tiếp theo là một khối nơi bạn sử dụng các tài nguyên mà bạn đã thiết lập mà bạn không muốn ẩn lỗi. Bạn không thể đưa mã vào try vì lỗi có thể tiến đến mệnh đề except. Bạn không thể đặt nó bên ngoài cấu trúc, bởi vì các tài nguyên chắc chắn không có sẵn ở đó, do thiết lập không thành công hoặc vì finally đã xé nát mọi thứ. Vì vậy, bạn cần có một khối else.

Ví dụ:

lis = range(100)
ind = 50
try:
   lis[ind]
except:
   pass
else:
   #Run this statement only if the exception was not raised
   print "The index was okay:",ind

ind = 101

try:
   lis[ind]
except:
   pass
print "The index was okay:",ind # this gets executes regardless of the exception
{{login.error}}