Penanganan Exception dalam Python
Ketika menjalankan program Python, tidak semua proses selalu berjalan sesuai dengan yang diharapkan. Program dapat menghadapi berbagai kondisi yang menyebabkan proses berhenti atau menghasilkan pesan kesalahan. Misalnya, pengguna memasukkan huruf ketika program meminta angka, program mencoba membuka berkas yang tidak tersedia, atau terjadi pembagian dengan angka nol.
Sebelum mempelajari materi tentang Penanganan Exception dalam Python, terlebih dahulu pelajari materi tentang: Membaca Berkas CSV dalam Python, Menulis Berkas CSV dalam Python, dan Exception dan Penanganan Kesalahan dalam Python.
Sebelum mempelajari materi tentang Penanganan Exception dalam Python, terlebih dahulu pelajari materi tentang: Membaca Berkas CSV dalam Python, Menulis Berkas CSV dalam Python, dan Exception dan Penanganan Kesalahan dalam Python.
Python menyediakan mekanisme penanganan exception untuk menghadapi kondisi tersebut. Dengan mekanisme ini, program dapat menentukan tindakan yang harus dilakukan ketika terjadi kesalahan sehingga program tidak langsung berhenti. Penanganan exception merupakan kemampuan penting dalam pemrograman karena membantu membuat program lebih teratur, aman, dan mudah digunakan.
Contoh:
angka = int(input("Masukkan angka: "))
Jika pengguna memasukkan:
abc
Python akan menghasilkan `ValueError`.
Dengan exception handling, kondisi tersebut dapat ditangani:
try:
angka = int(input("Masukkan angka: "))
except ValueError:
print("Masukkan angka yang benar")
Program dapat memberikan pesan yang lebih jelas kepada pengguna.
try:
# kode yang mungkin menghasilkan exception
except:
# kode ketika exception terjadi
Contoh:
try:
angka = int(input("Masukkan angka: "))
print(angka)
except:
print("Terjadi kesalahan")
Bagian `try` berisi kode yang berpotensi menghasilkan exception. Bagian `except` berisi tindakan yang dilakukan jika exception terjadi.
Contoh:
try:
angka = int(input("Masukkan angka: "))
except ValueError:
print("Input harus berupa angka")
Pada contoh tersebut, program hanya menangani `ValueError`. Cara ini membuat kode lebih jelas karena jenis kesalahan yang ditangani sudah diketahui.
Contoh:
try:
angka = int(input("Masukkan angka: "))
except ValueError:
print("Input tidak valid")
Jika pengguna memasukkan `100`, program dapat berjalan. Jika pengguna memasukkan `abc`, bagian `except` dijalankan.
Contoh:
try:
hasil = 10 / 0
except ZeroDivisionError:
print("Tidak dapat membagi dengan nol")
Contoh yang melibatkan input:
try:
angka1 = int(input("Angka pertama: "))
angka2 = int(input("Angka kedua: "))
hasil = angka1 / angka2
print("Hasil:", hasil)
except ZeroDivisionError:
print("Angka kedua tidak boleh nol")
Contoh:
try:
hasil = 10 + "5"
except TypeError:
print("Jenis data tidak sesuai")
Python tidak dapat menjumlahkan bilangan dengan teks menggunakan operasi tersebut.
Contoh:
data = [10, 20, 30]
try:
print(data[5])
except IndexError:
print("Indeks tidak tersedia")
Daftar tersebut hanya memiliki indeks `0`, `1`, dan `2`.
siswa = {
"Nama": "Andi",
"Kelas": "10A"
}
try:
print(siswa["Umur"])
except KeyError:
print("Data umur tidak tersedia")
try:
with open("data.txt", "r") as file:
isi = file.read()
except FileNotFoundError:
print("Berkas tidak ditemukan")
Penanganan ini sangat berguna dalam program yang membaca data dari berkas.
try:
angka1 = int(input("Masukkan angka pertama: "))
angka2 = int(input("Masukkan angka kedua: "))
hasil = angka1 / angka2
print("Hasil:", hasil)
except ValueError:
print("Input harus berupa angka")
except ZeroDivisionError:
print("Angka kedua tidak boleh nol")
Program akan memilih `except` berdasarkan exception yang terjadi.
Contoh:
try:
angka = int(input("Masukkan angka: "))
hasil = 100 / angka
except ValueError:
print("Input bukan angka")
except ZeroDivisionError:
print("Angka tidak boleh nol")
Jika input berupa `"abc"`, `ValueError` ditangani. Jika input berupa `0`, `ZeroDivisionError` ditangani.
try:
angka = int(input("Masukkan angka: "))
except ValueError:
print("Input tidak valid")
else:
print("Angka:", angka)
Alurnya:
Contoh:
try:
angka = int(input("Masukkan angka: "))
except ValueError:
print("Input tidak valid")
finally:
print("Proses selesai")
Pesan `"Proses selesai"` tetap dijalankan.
try:
angka = int(input("Masukkan angka: "))
hasil = 100 / angka
except ValueError:
print("Input harus berupa angka")
except ZeroDivisionError:
print("Angka tidak boleh nol")
else:
print("Hasil:", hasil)
finally:
print("Program selesai")
Struktur tersebut memiliki alur:
Contoh:
try:
angka = int("abc")
except ValueError as error:
print("Terjadi kesalahan:", error)
Variabel `error` menyimpan informasi mengenai exception yang terjadi. Cara ini berguna ketika informasi kesalahan perlu diketahui secara lebih rinci.
Contoh:
try:
angka = int(input("Masukkan angka: "))
except Exception as error:
print("Terjadi kesalahan:", error)
Pendekatan ini dapat digunakan ketika jenis exception belum diketahui. Namun, jika jenis exception sudah diketahui, lebih baik menggunakan exception yang spesifik.
Contoh:
except ValueError:
lebih jelas daripada:
except Exception:
try:
angka = int(input("Masukkan angka: "))
except:
print("Terjadi kesalahan")
Namun, cara tersebut menangkap berbagai jenis exception sehingga penyebab masalah menjadi kurang jelas.
Lebih baik menggunakan:
try:
angka = int(input("Masukkan angka: "))
except ValueError:
print("Input harus berupa angka")
Dengan demikian, penanganan dibuat lebih spesifik.
Contoh:
umur = -10
if umur < 0:
raise ValueError("Umur tidak boleh negatif")
Program akan menghasilkan `ValueError` jika umur kurang dari nol.
def cek_nilai(nilai):
if nilai < 0 or nilai > 100:
raise ValueError("Nilai harus antara 0 dan 100")
return nilai
print(cek_nilai(80))
Jika nilai berada di luar rentang yang ditentukan, exception akan dihasilkan.
def cek_nilai(nilai):
if nilai < 0 or nilai > 100:
raise ValueError("Nilai tidak valid")
try:
cek_nilai(120)
except ValueError as error:
print(error)
Hasilnya:
Nilai tidak valid
Contoh:
class DataTidakValidError(Exception):
pass
Exception tersebut dapat digunakan dalam program:
try:
raise DataTidakValidError("Data tidak valid")
except DataTidakValidError as error:
print(error)
Exception buatan sendiri berguna ketika program memiliki aturan khusus.
def pembagian(a, b):
return a / b
try:
hasil = pembagian(10, 0)
except ZeroDivisionError:
print("Tidak dapat membagi dengan nol")
Exception dapat ditangani di luar fungsi.
for i in range(3):
try:
angka = int(input("Masukkan angka: "))
print("Angka:", angka)
except ValueError:
print("Input harus berupa angka")
Jika pengguna salah memasukkan data pada satu putaran, program masih dapat melanjutkan putaran berikutnya.
while True:
try:
angka = int(input("Masukkan angka: "))
print("Angka yang dimasukkan:", angka)
break
except ValueError:
print("Input tidak valid. Silakan masukkan angka.")
Program terus meminta input selama terjadi `ValueError`. Ketika input sudah benar, `break` digunakan untuk menghentikan perulangan.
try:
with open("data.txt", "r", encoding="utf-8") as file:
data = file.read()
except FileNotFoundError:
print("Berkas data.txt tidak ditemukan")
else:
print(data)
Jika berkas tersedia, isinya ditampilkan. Jika tidak tersedia, pesan kesalahan ditampilkan.
import csv
try:
with open("siswa.csv", "r", encoding="utf-8") as file:
data = csv.DictReader(file)
for baris in data:
print(baris["Nama"])
except FileNotFoundError:
print("Berkas siswa.csv tidak ditemukan")
Cara ini membuat program lebih siap menghadapi kondisi ketika berkas belum tersedia.
import csv
try:
with open("siswa.csv", "w", newline="", encoding="utf-8") as file:
penulis = csv.writer(file)
penulis.writerow(["Nama", "Kelas"])
penulis.writerow(["Andi", "10A"])
except OSError:
print("Terjadi masalah ketika menyimpan data")
`OSError` dapat digunakan untuk menangani berbagai masalah yang berhubungan dengan operasi sistem berkas.
Contoh:
try:
umur = int(input("Masukkan umur: "))
except ValueError:
print("Umur harus berupa angka")
Program tidak boleh menganggap bahwa semua input pengguna pasti sesuai dengan kebutuhan.
Contoh:
try:
nilai = int(input("Masukkan nilai: "))
if nilai < 0 or nilai > 100:
raise ValueError("Nilai harus antara 0 dan 100")
except ValueError as error:
print("Kesalahan:", error)
Program melakukan dua pemeriksaan:
Contoh:
if nilai < 0:
print("Nilai tidak boleh negatif")
Exception handling digunakan untuk menangani kondisi kesalahan yang terjadi saat program berjalan.
Contoh:
try:
nilai = int(input("Masukkan nilai: "))
except ValueError:
print("Input harus berupa angka")
Keduanya dapat digunakan secara bersamaan.
Contoh sederhana:
try:
angka = int("abc")
except ValueError as error:
raise RuntimeError("Gagal memproses data") from error
Cara ini dapat digunakan ketika sebuah kesalahan tingkat rendah perlu diteruskan sebagai kesalahan yang lebih sesuai dengan konteks program.
Contoh sederhana:
try:
print("Menjalankan proses")
except Exception:
print("Terjadi kesalahan")
finally:
print("Membersihkan proses")
Bagian `finally` tetap dijalankan setelah proses `try` dan `except`.
try:
proses()
except ValueError:
print("Data tidak valid")
Jika membutuhkan tindakan ketika proses berhasil:
try:
proses()
except ValueError:
print("Data tidak valid")
else:
print("Proses berhasil")
Jika terdapat proses yang harus selalu dijalankan:
try:
proses()
except ValueError:
print("Data tidak valid")
finally:
print("Proses selesai")
def hitung_rata_rata():
try:
jumlah = int(input("Jumlah nilai: "))
if jumlah <= 0:
raise ValueError("Jumlah nilai harus lebih dari nol")
total = 0
for i in range(jumlah):
nilai = float(input(f"Nilai ke-{i + 1}: "))
if nilai < 0 or nilai > 100:
raise ValueError("Nilai harus berada antara 0 dan 100")
total += nilai
rata_rata = total / jumlah
except ValueError as error:
print("Kesalahan:", error)
else:
print("Rata-rata:", rata_rata)
finally:
print("Perhitungan selesai")
hitung_rata_rata()
Program tersebut menggunakan beberapa konsep:
except:
jika jenis exception sudah diketahui.
Lebih baik:
except ValueError:
try:
proses()
except:
pass
dapat membuat masalah sulit ditemukan karena exception diabaikan tanpa pesan.
Lebih baik memberikan penanganan yang jelas.
print("Error")
kurang membantu.
Pesan:
print("Input harus berupa angka")
lebih jelas bagi pengguna.
`try` digunakan untuk menempatkan kode yang berpotensi menghasilkan exception. `except` digunakan untuk menangani kesalahan yang terjadi. `else` digunakan ketika proses pada `try` berhasil tanpa exception, sedangkan `finally` digunakan untuk menjalankan kode yang perlu dilakukan setelah proses selesai.
Python juga menyediakan `raise` untuk menghasilkan exception secara sengaja. Fitur tersebut berguna ketika program memiliki aturan tertentu yang harus dipenuhi. Selain itu, programmer dapat membuat exception sendiri untuk kebutuhan khusus.
Dengan memahami `try`, `except`, `else`, `finally`, `raise`, serta berbagai jenis exception seperti `ValueError`, `TypeError`, `ZeroDivisionError`, `IndexError`, `KeyError`, dan `FileNotFoundError`, program Python dapat dibuat lebih terstruktur dan mampu menghadapi berbagai kondisi yang tidak terduga.
Pengertian Exception Handling
Exception handling adalah proses menangani kondisi kesalahan yang terjadi ketika program sedang berjalan. Tanpa penanganan exception, program dapat berhenti ketika menemukan kesalahan.Contoh:
angka = int(input("Masukkan angka: "))
Jika pengguna memasukkan:
abc
Python akan menghasilkan `ValueError`.
Dengan exception handling, kondisi tersebut dapat ditangani:
try:
angka = int(input("Masukkan angka: "))
except ValueError:
print("Masukkan angka yang benar")
Program dapat memberikan pesan yang lebih jelas kepada pengguna.
Alasan Penggunaan Exception Handling
Penanganan exception memiliki beberapa manfaat.- Mencegah program berhenti secara tiba-tiba.
- Memberikan pesan kesalahan yang lebih mudah dipahami.
- Membantu menangani input yang tidak sesuai.
- Memudahkan pengelolaan berkas.
- Membantu menjaga alur program.
- Membuat program lebih siap menghadapi kondisi tidak terduga.
- Mempermudah proses pencarian dan perbaikan kesalahan.
Struktur Dasar Exception Handling
Struktur paling sederhana menggunakan `try` dan `except`.try:
# kode yang mungkin menghasilkan exception
except:
# kode ketika exception terjadi
Contoh:
try:
angka = int(input("Masukkan angka: "))
print(angka)
except:
print("Terjadi kesalahan")
Bagian `try` berisi kode yang berpotensi menghasilkan exception. Bagian `except` berisi tindakan yang dilakukan jika exception terjadi.
Menggunakan Exception yang Spesifik
Penanganan sebaiknya menggunakan jenis exception yang sesuai.Contoh:
try:
angka = int(input("Masukkan angka: "))
except ValueError:
print("Input harus berupa angka")
Pada contoh tersebut, program hanya menangani `ValueError`. Cara ini membuat kode lebih jelas karena jenis kesalahan yang ditangani sudah diketahui.
Menangani ValueError
`ValueError` sering muncul ketika nilai yang diberikan tidak dapat digunakan dalam operasi tertentu.Contoh:
try:
angka = int(input("Masukkan angka: "))
except ValueError:
print("Input tidak valid")
Jika pengguna memasukkan `100`, program dapat berjalan. Jika pengguna memasukkan `abc`, bagian `except` dijalankan.
Menangani ZeroDivisionError
Pembagian dengan nol menghasilkan `ZeroDivisionError`.Contoh:
try:
hasil = 10 / 0
except ZeroDivisionError:
print("Tidak dapat membagi dengan nol")
Contoh yang melibatkan input:
try:
angka1 = int(input("Angka pertama: "))
angka2 = int(input("Angka kedua: "))
hasil = angka1 / angka2
print("Hasil:", hasil)
except ZeroDivisionError:
print("Angka kedua tidak boleh nol")
Menangani TypeError
`TypeError` dapat terjadi ketika operasi dilakukan pada jenis data yang tidak sesuai.Contoh:
try:
hasil = 10 + "5"
except TypeError:
print("Jenis data tidak sesuai")
Python tidak dapat menjumlahkan bilangan dengan teks menggunakan operasi tersebut.
Menangani IndexError
`IndexError` muncul ketika indeks yang digunakan tidak tersedia.Contoh:
data = [10, 20, 30]
try:
print(data[5])
except IndexError:
print("Indeks tidak tersedia")
Daftar tersebut hanya memiliki indeks `0`, `1`, dan `2`.
Menangani KeyError
`KeyError` dapat terjadi ketika program mencoba mengambil kunci yang tidak terdapat dalam kamus.siswa = {
"Nama": "Andi",
"Kelas": "10A"
}
try:
print(siswa["Umur"])
except KeyError:
print("Data umur tidak tersedia")
Menangani FileNotFoundError
Ketika program membuka berkas yang tidak tersedia, Python dapat menghasilkan `FileNotFoundError`.try:
with open("data.txt", "r") as file:
isi = file.read()
except FileNotFoundError:
print("Berkas tidak ditemukan")
Penanganan ini sangat berguna dalam program yang membaca data dari berkas.
Menggunakan Beberapa except
Satu `try` dapat memiliki beberapa `except`.try:
angka1 = int(input("Masukkan angka pertama: "))
angka2 = int(input("Masukkan angka kedua: "))
hasil = angka1 / angka2
print("Hasil:", hasil)
except ValueError:
print("Input harus berupa angka")
except ZeroDivisionError:
print("Angka kedua tidak boleh nol")
Program akan memilih `except` berdasarkan exception yang terjadi.
Urutan Penanganan Exception
Ketika beberapa `except` digunakan, Python memeriksa penanganan tersebut sesuai urutannya.Contoh:
try:
angka = int(input("Masukkan angka: "))
hasil = 100 / angka
except ValueError:
print("Input bukan angka")
except ZeroDivisionError:
print("Angka tidak boleh nol")
Jika input berupa `"abc"`, `ValueError` ditangani. Jika input berupa `0`, `ZeroDivisionError` ditangani.
Menggunakan else
`else` dapat digunakan bersama `try` dan `except`. Bagian `else` hanya dijalankan jika tidak terjadi exception.try:
angka = int(input("Masukkan angka: "))
except ValueError:
print("Input tidak valid")
else:
print("Angka:", angka)
Alurnya:
- `try` menjalankan kode utama.
- `except` dijalankan jika terjadi exception.
- `else` dijalankan jika tidak terjadi exception.
Menggunakan finally
`finally` digunakan untuk menjalankan kode setelah proses `try` selesai, baik terjadi exception maupun tidak.Contoh:
try:
angka = int(input("Masukkan angka: "))
except ValueError:
print("Input tidak valid")
finally:
print("Proses selesai")
Pesan `"Proses selesai"` tetap dijalankan.
Menggunakan try, except, else, dan finally
Keempat bagian dapat digunakan secara bersamaan.try:
angka = int(input("Masukkan angka: "))
hasil = 100 / angka
except ValueError:
print("Input harus berupa angka")
except ZeroDivisionError:
print("Angka tidak boleh nol")
else:
print("Hasil:", hasil)
finally:
print("Program selesai")
Struktur tersebut memiliki alur:
- Python menjalankan bagian `try`.
- Jika terjadi exception, Python mencari `except` yang sesuai.
- Jika tidak terjadi exception, bagian `else` dijalankan.
- Bagian `finally` tetap dijalankan setelah proses tersebut.
Menyimpan Informasi Exception
Exception dapat disimpan ke dalam variabel menggunakan `as`.Contoh:
try:
angka = int("abc")
except ValueError as error:
print("Terjadi kesalahan:", error)
Variabel `error` menyimpan informasi mengenai exception yang terjadi. Cara ini berguna ketika informasi kesalahan perlu diketahui secara lebih rinci.
Menangani Exception Secara Umum
Python juga menyediakan `Exception` sebagai kelas dasar untuk berbagai exception.Contoh:
try:
angka = int(input("Masukkan angka: "))
except Exception as error:
print("Terjadi kesalahan:", error)
Pendekatan ini dapat digunakan ketika jenis exception belum diketahui. Namun, jika jenis exception sudah diketahui, lebih baik menggunakan exception yang spesifik.
Contoh:
except ValueError:
lebih jelas daripada:
except Exception:
Jangan Menggunakan except Tanpa Jenis
Kode berikut memang dapat digunakan:try:
angka = int(input("Masukkan angka: "))
except:
print("Terjadi kesalahan")
Namun, cara tersebut menangkap berbagai jenis exception sehingga penyebab masalah menjadi kurang jelas.
Lebih baik menggunakan:
try:
angka = int(input("Masukkan angka: "))
except ValueError:
print("Input harus berupa angka")
Dengan demikian, penanganan dibuat lebih spesifik.
Menggunakan raise
Kata kunci `raise` digunakan untuk menghasilkan exception secara sengaja.Contoh:
umur = -10
if umur < 0:
raise ValueError("Umur tidak boleh negatif")
Program akan menghasilkan `ValueError` jika umur kurang dari nol.
Contoh raise dalam Fungsi
`raise` juga dapat digunakan di dalam fungsi.def cek_nilai(nilai):
if nilai < 0 or nilai > 100:
raise ValueError("Nilai harus antara 0 dan 100")
return nilai
print(cek_nilai(80))
Jika nilai berada di luar rentang yang ditentukan, exception akan dihasilkan.
Menangani raise dengan try dan except
Exception yang dibuat menggunakan `raise` dapat ditangani.def cek_nilai(nilai):
if nilai < 0 or nilai > 100:
raise ValueError("Nilai tidak valid")
try:
cek_nilai(120)
except ValueError as error:
print(error)
Hasilnya:
Nilai tidak valid
Membuat Exception Sendiri
Python memungkinkan pembuatan exception khusus.Contoh:
class DataTidakValidError(Exception):
pass
Exception tersebut dapat digunakan dalam program:
try:
raise DataTidakValidError("Data tidak valid")
except DataTidakValidError as error:
print(error)
Exception buatan sendiri berguna ketika program memiliki aturan khusus.
Exception di Dalam Fungsi
Exception dapat terjadi ketika sebuah fungsi dipanggil.def pembagian(a, b):
return a / b
try:
hasil = pembagian(10, 0)
except ZeroDivisionError:
print("Tidak dapat membagi dengan nol")
Exception dapat ditangani di luar fungsi.
Exception di Dalam Perulangan
Exception handling juga dapat digunakan di dalam perulangan.for i in range(3):
try:
angka = int(input("Masukkan angka: "))
print("Angka:", angka)
except ValueError:
print("Input harus berupa angka")
Jika pengguna salah memasukkan data pada satu putaran, program masih dapat melanjutkan putaran berikutnya.
Contoh Program Input yang Aman
Berikut contoh program yang meminta input angka sampai pengguna memberikan nilai yang benar.while True:
try:
angka = int(input("Masukkan angka: "))
print("Angka yang dimasukkan:", angka)
break
except ValueError:
print("Input tidak valid. Silakan masukkan angka.")
Program terus meminta input selama terjadi `ValueError`. Ketika input sudah benar, `break` digunakan untuk menghentikan perulangan.
Exception Handling Saat Membaca Berkas
Program yang membaca berkas sebaiknya mempertimbangkan kemungkinan berkas tidak ditemukan.try:
with open("data.txt", "r", encoding="utf-8") as file:
data = file.read()
except FileNotFoundError:
print("Berkas data.txt tidak ditemukan")
else:
print(data)
Jika berkas tersedia, isinya ditampilkan. Jika tidak tersedia, pesan kesalahan ditampilkan.
Exception Handling pada CSV
Penanganan exception juga dapat diterapkan ketika membaca CSV.import csv
try:
with open("siswa.csv", "r", encoding="utf-8") as file:
data = csv.DictReader(file)
for baris in data:
print(baris["Nama"])
except FileNotFoundError:
print("Berkas siswa.csv tidak ditemukan")
Cara ini membuat program lebih siap menghadapi kondisi ketika berkas belum tersedia.
Exception Handling Saat Menulis CSV
Penanganan exception dapat digunakan saat menulis data.import csv
try:
with open("siswa.csv", "w", newline="", encoding="utf-8") as file:
penulis = csv.writer(file)
penulis.writerow(["Nama", "Kelas"])
penulis.writerow(["Andi", "10A"])
except OSError:
print("Terjadi masalah ketika menyimpan data")
`OSError` dapat digunakan untuk menangani berbagai masalah yang berhubungan dengan operasi sistem berkas.
Exception dalam Input Pengguna
Input pengguna merupakan salah satu sumber exception yang sering ditemui.Contoh:
try:
umur = int(input("Masukkan umur: "))
except ValueError:
print("Umur harus berupa angka")
Program tidak boleh menganggap bahwa semua input pengguna pasti sesuai dengan kebutuhan.
Validasi dan Exception
Exception handling dapat digunakan bersama pemeriksaan kondisi.Contoh:
try:
nilai = int(input("Masukkan nilai: "))
if nilai < 0 or nilai > 100:
raise ValueError("Nilai harus antara 0 dan 100")
except ValueError as error:
print("Kesalahan:", error)
Program melakukan dua pemeriksaan:
- Memastikan input dapat diubah menjadi bilangan
- Memastikan nilai berada pada rentang yang diperbolehkan
Perbedaan Validasi dan Exception Handling
Validasi digunakan untuk memeriksa apakah data memenuhi aturan tertentu.Contoh:
if nilai < 0:
print("Nilai tidak boleh negatif")
Exception handling digunakan untuk menangani kondisi kesalahan yang terjadi saat program berjalan.
Contoh:
try:
nilai = int(input("Masukkan nilai: "))
except ValueError:
print("Input harus berupa angka")
Keduanya dapat digunakan secara bersamaan.
Exception Chaining
Python memungkinkan sebuah exception dikaitkan dengan exception lainnya.Contoh sederhana:
try:
angka = int("abc")
except ValueError as error:
raise RuntimeError("Gagal memproses data") from error
Cara ini dapat digunakan ketika sebuah kesalahan tingkat rendah perlu diteruskan sebagai kesalahan yang lebih sesuai dengan konteks program.
Menggunakan finally untuk Pembersihan
`finally` berguna ketika ada proses yang harus diselesaikan setelah operasi utama.Contoh sederhana:
try:
print("Menjalankan proses")
except Exception:
print("Terjadi kesalahan")
finally:
print("Membersihkan proses")
Bagian `finally` tetap dijalankan setelah proses `try` dan `except`.
Tabel Exception yang Sering Digunakan
| Exception | Kondisi |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Pola Dasar Exception Handling
Pola yang paling sering digunakan adalah:try:
proses()
except ValueError:
print("Data tidak valid")
Jika membutuhkan tindakan ketika proses berhasil:
try:
proses()
except ValueError:
print("Data tidak valid")
else:
print("Proses berhasil")
Jika terdapat proses yang harus selalu dijalankan:
try:
proses()
except ValueError:
print("Data tidak valid")
finally:
print("Proses selesai")
Contoh Program Lengkap
Berikut contoh program yang menggabungkan beberapa konsep exception handling.def hitung_rata_rata():
try:
jumlah = int(input("Jumlah nilai: "))
if jumlah <= 0:
raise ValueError("Jumlah nilai harus lebih dari nol")
total = 0
for i in range(jumlah):
nilai = float(input(f"Nilai ke-{i + 1}: "))
if nilai < 0 or nilai > 100:
raise ValueError("Nilai harus berada antara 0 dan 100")
total += nilai
rata_rata = total / jumlah
except ValueError as error:
print("Kesalahan:", error)
else:
print("Rata-rata:", rata_rata)
finally:
print("Perhitungan selesai")
hitung_rata_rata()
Program tersebut menggunakan beberapa konsep:
- fungsi
- `try`
- `except`
- `else`
- `finally`
- `raise`
- `ValueError`
- Perulangan
- Validasi input
Kesalahan yang Sering Terjadi
Berikut dijelaskan beberapa jenis kesalahan yang sering terjadi.Menempatkan Semua Kode di Dalam try
Tidak semua kode harus dimasukkan ke dalam `try`. Sebaiknya bagian `try` hanya berisi kode yang memang berpotensi menghasilkan exception yang ingin ditangani.Menggunakan except Terlalu Umum
Hindari penggunaan:except:
jika jenis exception sudah diketahui.
Lebih baik:
except ValueError:
Menyembunyikan Kesalahan
Kode seperti:try:
proses()
except:
pass
dapat membuat masalah sulit ditemukan karena exception diabaikan tanpa pesan.
Lebih baik memberikan penanganan yang jelas.
Pesan Kesalahan Tidak Jelas
Pesan:print("Error")
kurang membantu.
Pesan:
print("Input harus berupa angka")
lebih jelas bagi pengguna.
Praktik yang Baik
Beberapa kebiasaan yang dapat diterapkan ketika menggunakan exception handling:- Gunakan exception yang spesifik.
- Batasi kode di dalam `try`.
- Berikan pesan kesalahan yang jelas.
- Jangan mengabaikan exception tanpa alasan.
- Gunakan `finally` untuk proses yang memang harus selalu dilakukan.
- Gunakan `raise` untuk aturan khusus yang perlu dipaksakan.
- Gunakan exception buatan sendiri jika program memiliki kebutuhan khusus.
- Gabungkan validasi dengan exception handling ketika diperlukan.
Latihan
Berikut diberikana beberapa jenis latihan yang dapat dikerjakan secara langsung.Latihan 1
Buat program yang meminta bilangan bulat dan menangani `ValueError`.Latihan 2
Buat program pembagian dua angka dan tangani `ZeroDivisionError`.Latihan 3
Buat program untuk mengakses data list dan tangani `IndexError`.Latihan 4
Buat program yang mengambil data dari kamus dan tangani `KeyError`.Latihan 5
Buat program untuk membuka berkas dan tangani `FileNotFoundError`.Latihan 6
Buat program yang menggunakan `try`, `except`, dan `else`.Latihan 7
Buat program yang menggunakan `finally`.Latihan 8
Buat program validasi nilai menggunakan `raise`.Latihan 9
Buat exception sendiri untuk menangani data yang tidak valid.Latihan 10
Buat program pengolahan nilai siswa yang dapat menangani input salah, nilai di luar rentang, dan pembagian dengan nol.Kesimpulan
Penanganan exception merupakan bagian penting dalam pemrograman Python. Program dapat menghadapi berbagai kondisi yang tidak sesuai dengan harapan, sehingga diperlukan mekanisme untuk menangani kondisi tersebut secara terstruktur.`try` digunakan untuk menempatkan kode yang berpotensi menghasilkan exception. `except` digunakan untuk menangani kesalahan yang terjadi. `else` digunakan ketika proses pada `try` berhasil tanpa exception, sedangkan `finally` digunakan untuk menjalankan kode yang perlu dilakukan setelah proses selesai.
Python juga menyediakan `raise` untuk menghasilkan exception secara sengaja. Fitur tersebut berguna ketika program memiliki aturan tertentu yang harus dipenuhi. Selain itu, programmer dapat membuat exception sendiri untuk kebutuhan khusus.
Dengan memahami `try`, `except`, `else`, `finally`, `raise`, serta berbagai jenis exception seperti `ValueError`, `TypeError`, `ZeroDivisionError`, `IndexError`, `KeyError`, dan `FileNotFoundError`, program Python dapat dibuat lebih terstruktur dan mampu menghadapi berbagai kondisi yang tidak terduga.
Artikel ini akan dibaca oleh: Diyah Ayyu Azkiya Damayanti, Emiliana Catherine Corneliesta, Enggar Maulia, Erika Aisyah Putri, dan Eva Elvina Fitriani.
7 komentar untuk "Penanganan Exception dalam Python"
Hubungi admin melalui Wa : +62-896-2414-6106
Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung.
Bantu admin meningkatkan kualitas blog dengan melaporkan berbagai permasalahan seperti typo, link bermasalah, dan lain sebagainya melalui kolom komentar.
- Ikatlah Ilmu dengan Memostingkannya -
Saya suka kolesterol makanan, terutama yang berasal dari Babi.
BalasHapusKolesterol itu adalah bagian dari kehidupan, jadi tidak usah dilawan ataupun dikontrol, biarkan saja menumpuk ditubuh.
BalasHapusAngkat tangan, kaum rebahan tapi ingin punya badan seperti binaragawan. Salam kolesterol.
BalasHapusBaru tahu, minum alkohol ternyata meningkatkan kolesterol, padahalkan cuma air.
BalasHapusAlkohol itu bukan sembarang air, itu adalah air kemudharatan, yang tidak hanya mengandung kenikmatan duniawi, tapi juga mengandung kesusahan akhirat.
HapusInfo yang bermanfaat.
BalasHapusSaya mengkonsumsi air jeruk lemon (5 irisan lemon direndam dalam segelas air) 3 kali seminggu. Mengurangi konsumsi gula dengan cara konsumsi kopi & teh pahit, makan malam konsumsi berbagai buah-buahan dan cah sayuran. Hanya makan siang yang banyak nasinya.
Itu saya lakukan seiring bertambahnya usia.
Saya pernah kena kolesterol tinggi juga, dan memang cara paling efektif itu adalah mengatur pola makan dan olahraga. Alhamdulillah sudah normal.
Hapus