Python: Sekali Coba Beberapa Kecuali


195

Dengan Python, mungkinkah memiliki beberapa exceptpernyataan untuk satu trypernyataan? Seperti :

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

7
@ Eva611: Jangan minta maaf. (1) coba saja. (2) memposting jawaban untuk pertanyaan Anda.
S.Lott

6
Itu berhasil. Sudah mencobanya dengan penerjemah python ...
Eva611

38
@ Eva611 Saya pikir pertanyaan Anda baik-baik saja. Jauh lebih cepat bagi saya untuk Google daripada membuat contoh dalam interpreter Python, jadi saya senang Anda bertanya. DrTysa dan yang lainnya seharusnya merespons dengan "ya" dengan cepat daripada memarahi Anda.
Galarant

5
Sebagian besar waktu tebakan pertama Anda akan salah, atau kehilangan nuansa halus, jadi (seperti 15.000 lainnya) saya mencoba google terlebih dahulu!
Chris

9
Saya mencoba google dan menemukan pertanyaan ini. Oleh karena itu, saya senang orang lain menanyakannya di forum yang begitu publik sebagai SO, dan saya cukup senang dengan orang lain yang terhubung dengannya sehingga algoritma google muncul sebagai hasil pertama saya.
kingledion

Jawaban:


328

Ya itu mungkin.

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

Lihat: http://docs.python.org/tutorial/errors.html

Kata kunci "as" digunakan untuk menetapkan kesalahan ke variabel sehingga kesalahan dapat diselidiki lebih lanjut di kemudian hari dalam kode. Perhatikan juga bahwa tanda kurung untuk kasus pengecualian tiga diperlukan dalam python 3. Halaman ini memiliki lebih banyak info: Tangkap beberapa pengecualian dalam satu baris (kecuali blok)


76
Jika Anda ingin melakukan hal yang sama dalam kedua kasus, itu except (SomeError, OtherError):. Tidak menjawab pertanyaan OP, tetapi mungkin membantu beberapa orang yang datang ke sini melalui Google.
Markus

Jika misalnya Anda harus mengonversi beberapa versi struktur data ke struktur baru, saat memperbarui versi kode misalnya, Anda dapat membuat sarang percobaan .. kecuali.
Rolf of Saxony

5
Jika Anda ingin menangani semua pengecualian, Anda harus menggunakan except Exception:alih-alih polos except:. (Polos kecuali akan menangkap genap SystemExitdan KeyboardInterruptyang biasanya bukan yang Anda inginkan)
polvoazul

Anda mungkin ingin melakukan sesuatu dengan ejuga karena Anda memberi nama :)
HelloGoodbye
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.