Cara Menangani Pengecualian dengan Python

Cara Menangani Pengecualian dengan Python

Penanganan pengecualian adalah kemampuan Anda untuk menyesuaikan dan menampilkan pesan kesalahan untuk bagian program Anda yang gagal berfungsi.





Baik Anda sedang membangun situs web, membuat API, modul, atau produk lain apa pun menggunakan Python, kemampuan Anda untuk menangani pengecualian secara efektif memungkinkan Anda secara eksplisit menyatakan penyebab kesalahan.





Di sini, kita akan melihat bagaimana Anda dapat menangani pengecualian dengan Python.





Bagaimana Penanganan Pengecualian Bekerja di Python

Saat Anda mengajukan pengecualian, Anda memberi tahu Python untuk memunculkan pesan setiap kali blok kode gagal. Penanganan pengecualian seperti menyuruh seseorang untuk mencoba dan mengangkat beban. Dan jika mereka tidak bisa, mereka harus memberi tahu Anda.

Namun, untuk memunculkan pengecualian dalam Python, Anda akan memberi tahu Python untuk mencoba dan menjalankan blok kode tertentu. Jika blok itu gagal, Anda kemudian dapat meminta Python untuk menaikkan pengecualian yang ditentukan ke kode yang gagal.



Kapan Anda Harus Menggunakan Pengecualian dalam Pemrograman Python?

Pada sebagian besar kesempatan, Anda dapat menutupi kesalahan Python standar menggunakan pengecualian. Tetapi Anda harus tetap waspada, karena melakukan ini dapat menyebabkan masalah debug. Akibatnya, Anda mungkin merasa sulit untuk mengetahui akar penyebab bug yang akhirnya muncul.

Oleh karena itu, Anda harus menggunakan pengecualian ketika Anda telah cukup menguji kode Anda, dan Anda yakin itu berfungsi. Pada akhirnya, praktik terbaik adalah menggunakannya untuk menangani potensi kesalahan yang mungkin timbul dari pengguna, bukan dari kode itu sendiri.





Dengan kata lain, Anda dapat menggunakan pengecualian sebagai alat peringatan untuk memandu pengguna tentang cara menggunakan program Anda.

Menangani Pengecualian Python

Untuk menangani pengecualian di Python, pertama-tama Anda harus membungkus kode Anda dalam a coba...kecuali memblokir. Terkadang, Anda mungkin perlu menyertakan a akhirnya pernyataan untuk menangani tindakan lebih lanjut, tergantung pada kebutuhan Anda.





Konsep pengkodean pengecualian Python umumnya terlihat seperti ini:

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

Seperti yang disebutkan sebelumnya, Anda juga dapat menggunakan akhirnya dalam blok pengecualian. Tetapi kode yang Anda tulis di dalam a akhirnya klausa independen dan berjalan apakah ada pengecualian atau tidak.

Intinya, ini berguna jika Anda memiliki blok kode lain yang ingin Anda jalankan terus menerus terlepas dari apa yang terjadi di dalam coba...kecuali memblokir.

Berikut ini contohnya:

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

Dalam kode di atas, tolong mulai ulang berjalan terus menerus, terlepas dari apakah ada pengecualian atau tidak.

NS lain kondisi juga bisa 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 coba lagi dengan 'B' didefinisikan:

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 yang tidak standar. Tetapi Anda dapat memiliki pengecualian yang lebih eksplisit ketika Anda menggabungkan pengecualian bawaan (ditentukan) dengan pengecualian yang tidak standar:

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 pertama-tama memeriksa apakah ada NamaKesalahan dalam mencoba memblokir. Kemudian mencetak standar NamaKesalahan pengecualian terlebih dahulu ('nama 'B' tidak ditentukan'). Dan mendukungnya dengan pengecualian tertulis Anda ('B perlu didefinisikan, tolong').

Terkait: Prinsip Pemrograman Dasar Setiap Programmer Harus Tahu

alexa kesulitan memahami sekarang

Dan jika Anda ingin menangani rantai pengecualian, Anda juga dapat menemani mencoba blok dengan banyak kecuali pernyataan. Ini cukup berguna jika Anda mencoba blok memiliki potensi untuk memiliki 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 pembagiannya valid? Misalnya, mengganti F = 7/0 dalam kode di atas dengan F = 7/5 memberikan:

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

Pengecualian Buatan Pengguna dengan Python

Anda dapat membuat pengecualian Anda juga dan memanggilnya nanti di program Anda. Ini memungkinkan Anda memberikan deskripsi spesifik tentang pengecualian Anda dan menamainya sesuka Anda.

Meskipun demikian, setiap pengecualian yang ditentukan pengguna (langsung atau tidak langsung) masih berasal dari built-in Pengecualian kelas Python.

Contoh kode di bawah ini merujuk ke basis Pengecualian langsung dengan menelepon RuntimeError dari itu:

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 bahwa koneksi error , dalam hal ini, adalah kelas yang ditentukan pengguna, yang dapat Anda tingkatkan kapan pun Anda membutuhkannya dalam program Anda.

Terkait: Panduan Pemula untuk Ekspresi Reguler Dengan Python

Anda dapat membuat pengecualian yang ditentukan pengguna dengan menurunkannya langsung dari Pengecualian kelas dasar. Pengecualian di bawah, bagaimanapun, mencegah pengurangan 5 dari 6 dan memanggil pengecualian dari kelas dasar 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 dapat menggunakan pengecualian yang Anda definisikan sebelumnya dengan memanggilnya di fungsi lain. Misalnya, Anda dapat membuat floatError yang hanya memungkinkan penambahan dua pelampung:

# 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')

Karena Anda sekarang telah mendefinisikan FloatError class, Python memunculkannya jika Anda mencoba menambahkan dua literal non-float menggunakan tambahkanduaFloat fungsi.

Anda dapat mencetak FloatError class dalam file Python yang sama tempat Anda membuatnya untuk melihat apa yang terjadi:

print(FloatError)
Output:

FloatError , bagaimanapun, bukan pengecualian Python bawaan. Anda dapat memverifikasi ini dengan menelepon FloatError di file Python baru lainnya di mana Anda belum membuat kelas ini:

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

Anda mendapatkan NamaKesalahan karena Python tidak mengenalinya sebagai pengecualian standar.

Anda juga dapat mencoba mendefinisikan sendiri kelas kesalahan lain untuk melihat bagaimana mereka bermain.

Jadikan Program Python Anda Lebih Ramah Pengguna Dengan Pengecualian

Ada banyak pengecualian standar dalam Python. Tapi Anda juga bisa mendefinisikan milik Anda. Meskipun demikian, kemudahan menggunakan program Anda sampai batas tertentu tergantung pada bagaimana ia menangani berbagai pengecualian (apakah yang ditentukan pengguna, non-spesifik, atau standar).

Pengecualian, bagaimanapun, membiarkan Anda mendikte bagaimana program Anda harus bekerja ketika pengguna berinteraksi dengan mereka. Menyatakan dengan jelas dan ringkas penyebab kesalahan juga memberi petunjuk kepada pengguna tentang apa yang mereka lakukan salah, dan terkadang, ini mengarahkan mereka ke arah yang benar.

Membagikan Membagikan Menciak Surel Cara Men-debug Kode Python Anda

Lengkapi diri Anda dengan pengetahuan untuk menghancurkan setiap bug Python di jalur Anda.

Baca Selanjutnya
Topik-topik yang berkaitan
  • Pemrograman
  • Python
  • Tutorial Pengkodean
Tentang Penulis Idisou Omisola(94 Artikel Diterbitkan)

Idowu bersemangat tentang teknologi dan produktivitas apa pun yang cerdas. Di waktu luangnya, dia bermain-main dengan coding dan beralih ke papan catur ketika dia bosan, tetapi dia juga suka melepaskan diri dari rutinitas sesekali. Semangatnya untuk menunjukkan kepada orang-orang tentang teknologi modern memotivasinya untuk menulis lebih banyak.

More From Idowu Omisola

Berlangganan newsletter kami

Bergabunglah dengan buletin kami untuk kiat teknologi, ulasan, ebook gratis, dan penawaran eksklusif!

Klik di sini untuk berlangganan