Dalam tutorial ini, anda akan belajar mengenai pelbagai jenis ralat dan pengecualian yang terdapat di dalam Python. Mereka dibangkitkan setiap kali jurubahasa Python menghadapi kesilapan.
Video: Pengendalian Pengecualian Python
Kita boleh melakukan kesilapan tertentu semasa menulis program yang membawa kepada kesilapan ketika kita berusaha menjalankannya. Program python dihentikan sebaik sahaja menghadapi ralat yang tidak dapat ditangani. Kesalahan ini dapat dikelaskan secara meluas menjadi dua kelas:
- Kesalahan sintaks
- Kesalahan logik (Pengecualian)
Kesalahan Sintaks Python
Kesalahan yang disebabkan oleh tidak mengikuti struktur (sintaks) bahasa yang betul disebut kesalahan sintaks atau kesalahan parsing .
Mari lihat satu contoh:
>>> if a < 3 File "", line 1 if a < 3 SyntaxError: invalid syntax
Seperti yang ditunjukkan dalam contoh, anak panah menunjukkan di mana pengurai mengalami kesalahan sintaks.
Kita dapat perhatikan di sini bahawa titik dua :
hilang dalam if
penyataan tersebut.
Kesalahan Logik Python (Pengecualian)
Kesalahan yang berlaku pada waktu runtime (setelah lulus ujian sintaks) disebut pengecualian atau kesalahan logik .
Sebagai contoh, ia berlaku ketika kita cuba membuka fail (untuk membaca) yang tidak ada ( FileNotFoundError
), cuba membahagi nombor dengan sifar ( ZeroDivisionError
), atau cuba mengimport modul yang tidak ada ( ImportError
).
Setiap kali jenis kesalahan runtime ini berlaku, Python membuat objek pengecualian. Sekiranya tidak ditangani dengan betul, ia mencetak jejak kesalahan itu bersama dengan beberapa perincian mengenai mengapa kesalahan itu berlaku.
Mari lihat bagaimana Python menangani kesilapan ini:
>>> 1 / 0 Traceback (most recent call last): File "", line 301, in runcode File "", line 1, in ZeroDivisionError: division by zero >>> open("imaginary.txt") Traceback (most recent call last): File "", line 301, in runcode File "", line 1, in FileNotFoundError: (Errno 2) No such file or directory: 'imaginary.txt'
Pengecualian Built-in Python
Operasi haram boleh menimbulkan pengecualian. Terdapat banyak pengecualian bawaan di Python yang ditimbulkan apabila berlaku kesilapan. Kita dapat melihat semua pengecualian terbina dalam menggunakan fungsi terbina dalam local()
seperti berikut:
print(dir(locals()('__builtins__')))
locals()('__builtins__')
akan mengembalikan modul pengecualian, fungsi, dan atribut terbina dalam. dir
membolehkan kita menyenaraikan atribut ini sebagai rentetan.
Beberapa pengecualian biasa dalam pengaturcaraan Python bersama dengan kesalahan yang menyebabkannya disenaraikan di bawah:
Pengecualian | Sebab Ralat |
---|---|
AssertionError | Dibangkitkan apabila assert pernyataan gagal. |
AttributeError | Dibangkitkan apabila penugasan atribut atau rujukan gagal. |
EOFError | Dibangkitkan apabila input() fungsi mencapai keadaan akhir fail. |
FloatingPointError | Dibangkitkan apabila operasi titik terapung gagal. |
GeneratorExit | Naik apabila kaedah penjana close() dipanggil. |
ImportError | Dibangkitkan apabila modul yang diimport tidak dijumpai. |
IndexError | Dibangkitkan apabila indeks urutan berada di luar jangkauan. |
KeyError | Dibangkitkan apabila kunci tidak dijumpai dalam kamus. |
KeyboardInterrupt | Dibangkitkan semasa pengguna menekan tombol interrupt ( Ctrl+C atau Delete ). |
MemoryError | Dibangkitkan ketika operasi kehabisan ingatan. |
NameError | Dibangkitkan apabila pemboleh ubah tidak dijumpai dalam skop tempatan atau global. |
NotImplementedError | Dibesarkan dengan kaedah abstrak. |
OSError | Dibangkitkan semasa operasi sistem menyebabkan kesalahan berkaitan sistem. |
OverflowError | Dibangkitkan apabila hasil operasi aritmetik terlalu besar untuk diwakili. |
ReferenceError | Dibangkitkan apabila proksi rujukan lemah digunakan untuk mengakses rujukan sampah yang dikumpulkan. |
RuntimeError | Dibangkitkan apabila ralat tidak termasuk dalam kategori lain. |
StopIteration | Dibangkitkan oleh next() fungsi untuk menunjukkan bahawa tidak ada item lagi yang akan dikembalikan oleh iterator. |
SyntaxError | Dibangkitkan oleh penghurai ketika ralat sintaks dihadapi. |
IndentationError | Dibangkitkan apabila terdapat lekukan yang tidak betul. |
TabError | Dibangkitkan apabila lekukan terdiri daripada tab dan ruang yang tidak konsisten. |
SystemError | Dibangkitkan semasa jurubahasa mengesan kesalahan dalaman. |
SystemExit | Dibangkitkan oleh sys.exit() fungsi. |
TypeError | Dibangkitkan ketika fungsi atau operasi diterapkan pada objek jenis yang salah. |
UnboundLocalError | Dibangkitkan ketika rujukan dibuat ke variabel lokal dalam fungsi atau metode, tetapi tidak ada nilai yang terikat dengan pemboleh ubah tersebut. |
UnicodeError | Dibangkitkan apabila berlaku kesalahan pengekodan atau penyahkodan berkaitan Unicode. |
UnicodeEncodeError | Dibangkitkan apabila ralat berkaitan Unicode berlaku semasa pengekodan. |
UnicodeDecodeError | Dibangkitkan apabila ralat berkaitan Unicode berlaku semasa penyahkodan. |
UnicodeTranslateError | Dibangkitkan apabila ralat berkaitan Unicode berlaku semasa menterjemahkan. |
ValueError | Dibangkitkan apabila fungsi mendapat argumen jenis yang betul tetapi tidak wajar. |
ZeroDivisionError | Dibangkitkan apabila operasi operasi pembahagian atau modulo kedua adalah sifar. |
Sekiranya diperlukan, kita juga dapat menentukan pengecualian kita sendiri di Python. Untuk mengetahui lebih lanjut mengenai mereka, lawati Pengecualian yang ditentukan oleh Pengguna Python.
Kami dapat menangani pengecualian terbina dalam dan pengguna ini di Python menggunakan try
, except
dan finally
pernyataan. Untuk mengetahui lebih lanjut mengenai mereka, lawati Python cuba, kecuali dan akhirnya pernyataan.