Pengendalian pengecualian Python
Artikel ini menyenaraikan pengendalian pengecualian biasa dalam Python dengan lebih terperinci untuk rujukan anda, seperti berikut:
1 Pengecualian balingan dan pengecualian tersuai
Python menggunakan objek pengecualian untuk mewakili situasi tidak normal . Jika objek pengecualian tidak dikendalikan atau ditangkap, program akan menamatkan pelaksanaan dengan apa yang dipanggil jejak balik (mesej ralat).
①.penyataan raise
Kata kunci raise dalam Python digunakan untuk menaikkan pengecualian, yang pada asasnya sama dengan kata kunci throw dalam C# dan Java, seperti yang ditunjukkan di bawah:
# -- coding: utf-8 -- def ThorwErr(): raise Exception("抛出一个异常") # Exception: 抛出一个异常 ThorwErr()
Kata kunci raise ialah diikuti oleh Throwing adalah jenis pengecualian umum (Pengecualian Secara umumnya, lebih terperinci pengecualian yang dilemparkan, lebih baik Python mempunyai banyak jenis pengecualian terbina dalam modul pengecualian). pengecualian, seperti berikut:
import exceptions # ['ArithmeticError', 'AssertionError'.....] print dir(exceptions)
Melepasi pengecualian
Jika anda menangkap pengecualian, tetapi anda ingin menaikkannya semula (lulus pengecualian), anda boleh menggunakan penyataan kenaikan tanpa parameter:
# -- coding: utf-8 -- class MuffledCalculator: muffled = False def calc(self,expr): try: return eval(expr) except ZeroDivisionError: if self.muffled: print 'Division by zero is illegal' else: raise
② dan dalam C# Sama seperti try/catch, kata kunci try/except digunakan dalam Python untuk menangkap pengecualian, seperti berikut:
class SomeCustomException(Exception): pass
Dalam pernyataan kecuali, hanya jenis pengecualian yang diisytiharkan. kemudiannya ditangkap, jika boleh Jika jenis pengecualian lain dilemparkan, anda perlu menambah pernyataan kecuali, atau anda boleh menentukan jenis pengecualian yang lebih umum seperti: Pengecualian, seperti berikut:
# -- coding: utf-8 -- try: print 2/0 except ZeroDivisionError: print '除数不能为0'
Untuk menangkap berbilang pengecualian, selain mengisytiharkan berbilang Selain pernyataan kecuali, anda juga boleh menyenaraikan berbilang pengecualian sebagai tupel selepas pernyataan kecuali:
# -- coding: utf-8 -- try: print 2/'0' except ZeroDivisionError: print '除数不能为0' except Exception: print '其他类型异常'② Dapatkan maklumat pengecualian
# -- coding: utf-8 -- try: print 2/'0' except (ZeroDivisionError,Exception): print '发生了一个异常'
Klausa akhirnya digunakan bersama dengan klausa cuba, tetapi tidak seperti pernyataan kecuali, akhirnya tidak kira sama ada terdapat. pengecualian di dalam klausa try , kod dalam klausa akhirnya akan dilaksanakan. Secara umum, akhirnya sendiri sering digunakan untuk menutup fail atau dalam Soket.
# -- coding: utf-8 -- try: print 2/'0' except (ZeroDivisionError,Exception) as e: # unsupported operand type(s) for /: 'int' and 'str' print e