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 di 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 hal ini dapat menyebabkan masalah debug. Akibatnya, Anda mungkin merasa sulit untuk mencari tahu akar penyebab dari bug akhirnya.
Oleh karena itu, Anda harus menggunakan pengecualian ketika Anda sudah 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 blok. 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:
mencoba:
"kode yang akan dieksekusi"
kecuali:
"pesan eror"
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 sangat berguna jika Anda memiliki blok kode lain yang ingin Anda jalankan terus menerus terlepas dari apa yang terjadi di dalam coba...kecuali blok.
Berikut ini contohnya:
mencoba:
cetak (9+6)
kecuali:
print("pesan kesalahan")
akhirnya:
print("silahkan restart")
Keluaran:
15
tolong mulai ulang
Dalam kode di atas, tolong mulai ulang berjalan terus menerus, terlepas dari apakah ada pengecualian atau tidak.
Sebuah lain kondisi juga bisa mengikuti kecuali pernyataan:
mencoba:
C = 2 + B
kecuali:
print("B perlu didefinisikan")
lain:
print (u"Berhasil ditambahkan! Hasilnya adalah %s"%(C))
Keluaran: B perlu didefinisikan
Sekarang coba lagi dengan "B" didefinisikan:
mencoba:
B = 5
C = 2 + B
kecuali:
print("B perlu didefinisikan")
lain:
print (u"Berhasil ditambahkan! Hasilnya adalah %s"%(C))
Keluaran: berhasil ditambahkan! Hasilnya adalah 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:
mencoba:
C = 2 + B
kecuali NameError sebagai err:
print (err, ":", "B perlu didefinisikan, tolong")
lain:
print (u"Berhasil ditambahkan! Hasilnya adalah %s"%(C))
Keluaran: nama 'B' tidak ditentukan: B perlu didefinisikan, tolong
Pengecualian di atas pertama-tama memeriksa apakah ada NamaKesalahan dalam mencoba blok. Kemudian mencetak standar NamaKesalahan pengecualian pertama (" nama 'B' tidak ditentukan"). Dan mendukungnya dengan pengecualian tertulis Anda ("B perlu didefinisikan, tolong").
Terkait: Prinsip Dasar Pemrograman Yang Harus Diketahui Setiap Programmer
Dan jika Anda ingin menangani rantai pengecualian, Anda juga dapat menemani a mencoba blok dengan banyak kecuali pernyataan. Ini cukup berguna jika Anda mencoba blok memiliki potensi untuk memiliki banyak pengecualian:
mencoba:
B = 5
C = 2 + B
D = mengapung (6)
F = 7/0
kecuali NameError sebagai err:
print (err,":", "B perlu didefinisikan, tolong")
kecuali ValueError sebagai val:
print (val,":", "Anda tidak dapat mengonversi data itu")
kecuali ZeroDivisionError sebagai zeroerr:
print (zeroerr,":", "Anda tidak dapat membagi angka dengan nol")
lain:
print (u"Operasi berhasil! Hasilnya adalah: %s, %s, dan %s"%(C, D, F))
Keluaran: pembagian dengan nol: Anda tidak dapat membagi angka dengan nol
Bagaimana jika pembagiannya valid? Misalnya, mengganti F = 7/0 dalam kode di atas dengan F = 7/5 memberikan:
Keluaran: Operasi berhasil! Hasilnya adalah: 7, 6.0, dan 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:
kelas connectionError (RuntimeError):
def __init__(sendiri, nilai):
diri.nilai = nilai
mencoba:
naikkan connectionError("Nama host salah")
kecuali connectionError sebagai err:
cetak (nilai kesalahan)
Keluaran: Nama host yang buruk
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:
kesalahan kelas (Pengecualian):
lulus
kelas enamFiveError (kesalahan):
def __init__(diri, nilai, pesan):
diri.nilai = nilai
self.message = pesan
mencoba:
angkat enamFiveError (6-5,"Pengurangan ini tidak diperbolehkan")
kecuali sixFiveError sebagai e:
print("Terjadi kesalahan:", e.message)
Keluaran: Terjadi kesalahan: Pengurangan ini tidak diizinkan
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:
# Pertama, panggil kelas pengecualian dasar:
kesalahan kelas (Pengecualian):
lulus
# Selanjutnya, dapatkan pengecualian Anda sendiri dari kelas dasar:
kelas FloatError (kesalahan):
def __init__(diri, nilai, pesan):
diri.nilai = nilai
self.message = pesan
# Buat fungsi untuk menambahkan dua float:
def addTwoFloat (a, b):
if (tipe (a) dan tipe (b)) != float:
menaikkan FloatError (a+b,"Angka harus mengambang untuk ditambahkan")
lain:
cetak (a + b)
tambahkanTwoFloat (4, 7)
Keluaran: __main__.FloatError: (11, 'Angka harus mengambang untuk ditambahkan')
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:
cetak (FloatError)
Keluaran:
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:
cetak (FloatError)
Keluaran: NameError: nama 'FloatError' tidak ditentukan
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 singkat penyebab kesalahan juga memberi petunjuk kepada pengguna tentang apa yang mereka lakukan salah, dan terkadang, ini mengarahkan mereka ke arah yang benar.
Lengkapi diri Anda dengan pengetahuan untuk menghancurkan setiap bug Python di jalur Anda.
Baca Selanjutnya
- Pemrograman
- Python
- Tutorial Pengkodean
Idowu sangat menyukai teknologi dan produktivitas 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.
Berlangganan newsletter kami
Bergabunglah dengan buletin kami untuk kiat teknologi, ulasan, ebook gratis, dan penawaran eksklusif!
Satu langkah lagi…!
Harap konfirmasi alamat email Anda di email yang baru saja kami kirimkan.