Cara Mengendalikan Pengecualian di Python

Cara Mengendalikan Pengecualian di Python

Pengendalian pengecualian adalah kemampuan anda untuk menyesuaikan dan menampilkan mesej ralat untuk bahagian program anda yang gagal berfungsi.





Sama ada anda membina laman web, membuat API, modul, atau produk lain menggunakan Python, kemampuan anda menangani pengecualian secara berkesan membolehkan anda menyatakan secara jelas penyebab ralat.





Di sini, kita akan melihat bagaimana anda dapat menangani pengecualian di Python.



Bagaimana Pengendalian Pengecualian Berfungsi di Python

Apabila anda membuat pengecualian, anda memberitahu Python untuk membawa mesej setiap kali sekumpulan kod gagal. Pengendalian pengecualian adalah seperti memberitahu seseorang untuk mencuba dan menaikkan berat badan. Dan jika mereka tidak dapat, mereka harus memberitahu anda.

Namun, untuk meningkatkan pengecualian di Python, anda akan memberitahu Python untuk mencuba dan menjalankan blok kod tertentu. Sekiranya blok itu gagal, anda kemudian boleh meminta Python untuk meningkatkan pengecualian yang ditentukan untuk kod yang gagal.



Bilakah Anda Harus Menggunakan Pengecualian dalam Pengaturcaraan Python?

Pada kebiasaannya, anda dapat menutup kesalahan Python standard menggunakan pengecualian. Tetapi anda harus tetap waspada, kerana melakukan ini boleh menyebabkan masalah penyahpepijatan. Oleh itu, anda mungkin sukar mengetahui punca bug akhirnya.

Oleh itu, anda harus menggunakan pengecualian apabila anda sudah cukup menguji kod anda, dan anda yakin ia berfungsi. Pada akhirnya, adalah amalan terbaik untuk menggunakannya untuk menangani kemungkinan kesalahan yang mungkin timbul dari hujung pengguna dan bukannya kod itu sendiri.





Dengan kata lain, anda boleh menggunakan pengecualian sebagai alat peringatan untuk membimbing pengguna mengenai cara menggunakan program anda.

Mengendalikan Pengecualian Python

Untuk menangani pengecualian di Python, pertama anda perlu membungkus kod anda dengan huruf a cuba ... kecuali sekatan. Kadang-kadang, anda mungkin perlu memasukkan a akhirnya pernyataan untuk menangani tindakan selanjutnya, bergantung pada keperluan anda.





Konsep pengecualian pengecualian Python umumnya seperti ini:

try:
'code to be executed'
except:
'error message'

Seperti yang disebutkan sebelumnya, anda juga boleh menggunakan akhirnya di blok pengecualian. Tetapi kod yang anda tulis di dalam a akhirnya klausa bebas dan berjalan sama ada terdapat pengecualian atau tidak.

Pada hakikatnya, sangat berguna jika anda mempunyai blok kod lain yang ingin anda jalankan secara berterusan tanpa mengira apa yang berlaku di dalam cuba ... kecuali sekatan.

Inilah contohnya:

try:
print(9+6)
except:
print('error message')
finally:
print('please restart')
Output:
15
please restart

Dalam kod di atas, sila mulakan semula berjalan berterusan, tidak kira ada pengecualian atau tidak.

Seorang yang lain keadaan juga boleh mengikuti kecuali penyataan:

try:
C = 2 + B
except:
print('B needs to be defined')
else:
print(u'Added successfully! The result is %s'%(C))
Output: B needs to be defined

Sekarang cuba lagi dengan 'B' yang ditentukan:

try:
B = 5
C = 2 + B
except:
print('B needs to be defined')
else:
print(u'Added successfully! The result is %s'%(C))
Output: Added successfully! The result is 7

Contoh di atas adalah pengecualian tidak standard. Tetapi anda boleh mendapat pengecualian yang lebih jelas apabila anda menggabungkan pengecualian terbina dalam (yang ditentukan) dengan yang tidak standard:

try:
C = 2 + B
except NameError as err:
print(err, ':', 'B needs to be defined, please')
else:
print(u'Added successfully! The result is %s'%(C))
Output: name 'B' is not defined : B needs to be defined, please

Pengecualian di atas memeriksa terlebih dahulu jika ada Ralat Nama di dalam cuba sekatan. Ia kemudian mencetak standard Ralat Nama pengecualian terlebih dahulu ('nama' B 'tidak ditentukan'). Dan menyokongnya dengan pengecualian bertulis anda ('B perlu ditentukan, sila').

Berkaitan: Prinsip Pengaturcaraan Asas Yang Harus Tahu Setiap Pengaturcara

cara memindahkan data dari excel ke word secara automatik

Dan jika anda ingin mengatasi rantai pengecualian, anda juga boleh menyertai a cuba blok dengan banyak kecuali penyataan. Ini sangat berguna jika anda cuba blok berpotensi mempunyai banyak pengecualian:

try:
B = 5
C = 2 + B
D = float(6)
F = 7/0
except NameError as err:
print(err,':', 'B needs to be defined, please')
except ValueError as val:
print(val,':', 'You can't convert that data')
except ZeroDivisionError as zeroerr:
print(zeroerr,':', 'You can't divide a number by zero')
else:
print(u'Operation successfull! The results are: %s, %s, and %s'%(C, D, F))
Output: division by zero : You can't divide a number by zero

Bagaimana jika pembahagian itu sah? Contohnya, menggantikan F = 7/0 dalam kod di atas dengan F = 7/5 memberi:

Output: Operation successfull! The results are: 7, 6.0, and 1.4

Pengecualian yang Ditetapkan Pengguna di Python

Anda juga boleh membuat pengecualian dan memanggilnya kemudian dalam program anda. Ini membolehkan anda memberikan keterangan khusus mengenai pengecualian anda dan menamakannya sesuka hati.

Walaupun demikian, setiap pengecualian yang ditentukan pengguna (secara langsung atau tidak langsung) masih berasal dari bawaan Pengecualian kelas Python.

Contoh kod di bawah merujuk kepada asas Pengecualian secara langsung dengan memanggil RuntimeError daripadanya:

class connectionError(RuntimeError):
def __init__(self, value):
self.value = value
try:
raise connectionError('Bad hostname')
except connectionError as err:
print(err.value)
Output: Bad hostname

Perhatikan bahawa Ralat sambungan , dalam kes ini, adalah kelas yang ditentukan pengguna, yang boleh anda naikkan bila-bila masa anda memerlukannya dalam program anda.

Berkaitan: Panduan Pemula untuk Ekspresi Biasa Dengan Python

Anda boleh membuat pengecualian yang ditentukan pengguna dengan memperolehnya secara langsung dari Pengecualian kelas asas. Pengecualian di bawah, bagaimanapun, menghalang pengurangan 5 dari 6 dan memanggil pengecualian dari kelas asas secara langsung:

class errors(Exception):
pass
class sixFiveError(errors):
def __init__(self, value, message):
self.value = value
self.message = message
try:
raise sixFiveError(6-5,'This substraction is not allowed')
except sixFiveError as e:
print('There was an error:', e.message)
Output: There was an error: This substraction is not allowed

Dalam praktiknya, anda boleh menggunakan pengecualian yang anda tetapkan sebelumnya dengan memanggilnya dalam fungsi lain. Sebagai contoh, anda boleh membuat kesalahan apungan yang hanya membenarkan penambahan dua apungan:

# First call the base exception classes:
class errors(Exception):
pass
# Next, derive your own exception from the base class:
class FloatError(errors):
def __init__(self, value, message):
self.value = value
self.message = message
# Create a function to add two floats:
def addTwoFloat(a, b):
if (type(a) and type(b)) != float:
raise FloatError(a+b,'Numbers must be float to add')
else:
print(a + b)
addTwoFloat(4, 7)
Output: __main__.FloatError: (11, 'Numbers must be float to add')

Kerana anda sekarang telah menentukan a Kesalahan Float kelas, Python menaikkannya jika anda cuba menambahkan dua literal bukan terapung menggunakan addtwoFloat fungsi.

Anda boleh mencetak Kesalahan Float kelas dalam fail Python yang sama di mana anda membuatnya untuk melihat apa yang berlaku:

print(FloatError)
Output:

Kesalahan Float , bagaimanapun, bukan pengecualian Python bawaan. Anda boleh mengesahkannya dengan menghubungi Kesalahan Float dalam fail Python baru yang belum anda buat kelas ini:

print(FloatError)
Output: NameError: name 'FloatError' is not defined

Anda mendapat Ralat Nama kerana Python tidak mengenalinya sebagai pengecualian standard.

Anda juga boleh mencuba menentukan kelas ralat yang lain untuk melihat bagaimana rangkumannya.

Jadikan Program Python Anda Lebih Mesra Pengguna Dengan Pengecualian

Terdapat banyak pengecualian standard di Python. Tetapi anda juga boleh menentukannya. Walaupun begitu, kemudahan menggunakan program anda bergantung pada seberapa jauh cara mengendalikan pelbagai pengecualian (sama ada yang ditentukan pengguna, tidak spesifik, atau standard).

Walau bagaimanapun, pengecualian membolehkan anda menentukan cara program anda berfungsi semasa pengguna berinteraksi dengannya. Dengan jelas dan ringkas menyatakan penyebab ralat juga memberi pengguna petunjuk tentang apa yang mereka lakukan salah, dan kadang-kadang, itu menunjukkan mereka ke arah yang betul.

Berkongsi Berkongsi Tweet E-mel Cara Debug Kod Python Anda

Lengkapkan diri anda dengan pengetahuan untuk menghilangkan setiap bug Python di jalan anda.

Baca Seterusnya
Topik-topik yang berkaitan
  • Pengaturcaraan
  • Python
  • Tutorial Pengekodan
Mengenai Pengarang Idisou Omisola(94 Artikel Diterbitkan)

Idowu meminati apa sahaja teknologi pintar dan produktiviti. Pada masa lapang, dia bermain-main dengan pengekodan dan beralih ke papan catur ketika dia bosan, tetapi dia juga suka melepaskan diri dari rutin sekali-sekala. Kesungguhannya untuk menunjukkan kepada orang-orang tentang teknologi moden mendorongnya untuk menulis lebih banyak lagi.

Lagi Dari Idowu Omisola

Langgan buletin kami

Sertailah buletin kami untuk mendapatkan petua, ulasan, ebook percuma, dan tawaran eksklusif!

Klik di sini untuk melanggan