Python: Tek Deneme Çoklu


199

Python'da, bir exceptifade için birden fazla ifade olması mümkün müdür try? Gibi :

try:
 #something1
 #something2
except ExceptionType1:
 #return xyz
except ExceptionType2:
 #return abc

7
@ Eva611: Özür dileme. (1) deneyin. (2) sorunuza bir cevap gönderin.
S.Lott

6
Çalışıyor. Python yorumlayıcısıyla denedim ...
Eva611

39
@ Eva611 Bence sorunuz iyiydi. Python yorumlayıcısında bir örnek oluşturmak yerine Google'da bu benim için çok daha hızlıydı, bu yüzden sorduğunuz için mutlu oldum. DrTysa ve diğerleri sadece azarlamak yerine hızlı bir "evet" ile yanıt vermeliydi.
galarant

5
Çoğu zaman ilk tahmininiz yanlış olacak ya da ince nüansları özleyecek, yani (15.000 diğerleri gibi) önce google'ı denedim!
Chris

9
Google'ı denedim ve bu soruyu buldum. Bu nedenle, bir başkasının SO olarak bu kadar halka açık bir forumda sorduğuna sevindim ve google'ın algoritmasının ilk sonucum olarak ortaya çıkmasına bağlı diğer insanlara yeterince memnunum.
kingledion

Yanıtlar:


332

Evet mümkün.

try:
   ...
except FirstException:
   handle_first_one()

except SecondException:
   handle_second_one()

except (ThirdException, FourthException, FifthException) as e:
   handle_either_of_3rd_4th_or_5th()

except Exception:
   handle_all_other_exceptions()

Bkz. Http://docs.python.org/tutorial/errors.html

"As" anahtar sözcüğü, hatayı bir kodda daha sonra ayrıntılı olarak araştırılabilmesi için hatayı bir değişkene atamak için kullanılır. Ayrıca python 3'te üçlü istisna durumu için parantez gerektiğini unutmayın. Bu sayfada daha fazla bilgi var: Bir satırda birden çok istisna yakala (blok hariç)


78
Her iki durumda da aynı şeyi yapmak istiyorsanız, öyle except (SomeError, OtherError):. OP sorusuna cevap vermez, ancak buraya Google üzerinden ulaşan bazı kişilere yardımcı olabilir.
Mark

Örneğin, bir veri yapısının birden çok sürümünü yeni bir yapıya dönüştürmeniz gerekiyorsa, örneğin kod sürümlerini güncellerken try..excepts'i iç içe yerleştirebilirsiniz.
Saksonya

5
Tüm istisnaları ele almak istiyorsanız except Exception:, düz yerine kullanmanız gerekir except:. (Düz hariç bile yakalamak SystemExitve KeyboardInterruptgenellikle ne istediğinizi değil)
polvoazul

Belki de ebir isim verdiğiniz için de bir şeyler yapmak istersiniz :)
HelloGoodbye
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.