Exception Buatan Sendiri dalam Python
Dalam pemrograman Python, terdapat banyak jenis exception yang sudah tersedia. Beberapa di antaranya adalah `ValueError`, `TypeError`, `ZeroDivisionError`, `IndexError`, dan `FileNotFoundError`. Jenis exception tersebut dapat digunakan untuk menangani berbagai kesalahan yang umum terjadi.
Sebelum mempelajari materi tentang Exception Buatan Sendiri dalam Python, terlebih dahulu pelajari materi tentang: Menulis Berkas CSV dalam Python, Exception dan Penanganan Kesalahan dalam Python, dan Penanganan Exception dalam Python.
Sebelum mempelajari materi tentang Exception Buatan Sendiri dalam Python, terlebih dahulu pelajari materi tentang: Menulis Berkas CSV dalam Python, Exception dan Penanganan Kesalahan dalam Python, dan Penanganan Exception dalam Python.
Namun, program tertentu memiliki aturan dan kebutuhan khusus yang tidak selalu dapat dijelaskan dengan exception bawaan Python. Dalam kondisi tersebut, programmer dapat membuat exception sendiri. Exception yang dibuat secara khusus disebut exception buatan sendiri. Kemampuan ini berguna untuk membuat penanganan kesalahan menjadi lebih jelas sesuai dengan aturan yang terdapat dalam program.
NilaiTidakValidError
Dengan nama tersebut, penyebab kesalahan dapat lebih mudah dipahami.
Contohnya, program pengelolaan siswa dapat memiliki exception khusus untuk nilai yang tidak valid.
Contoh:
ValueError
TypeError
IndexError
KeyError
ZeroDivisionError
Namun, programmer juga dapat membuat jenis exception baru.
Contoh:
class NilaiTidakValidError(Exception):
pass
Pada contoh tersebut, `NilaiTidakValidError` merupakan exception buatan sendiri.
Bentuk dasarnya:
class NamaException(Exception):
pass
Contoh:
class NilaiTidakValidError(Exception):
pass
Kelas tersebut mewarisi `Exception`. Kata kunci `pass` digunakan karena belum ada perilaku tambahan yang perlu ditulis di dalam kelas.
Contoh:
class DataTidakValidError(Exception):
pass
Artinya, `DataTidakValidError` memiliki kemampuan dasar sebagai exception karena berasal dari `Exception`. Pola sederhananya dapat digambarkan sebagai berikut:
Exception
|
+-- DataTidakValidError
Dengan cara tersebut, exception baru dapat digunakan bersama `try` dan `except`.
Contoh:
class NilaiTidakValidError(Exception):
pass
nilai = 120
if nilai > 100:
raise NilaiTidakValidError
Ketika kondisi tersebut terpenuhi, Python menghasilkan `NilaiTidakValidError`.
class NilaiTidakValidError(Exception):
pass
nilai = 120
if nilai > 100:
raise NilaiTidakValidError("Nilai tidak boleh lebih dari 100")
Pesan tersebut memberikan informasi mengenai penyebab kesalahan.
class NilaiTidakValidError(Exception):
pass
try:
nilai = 120
if nilai > 100:
raise NilaiTidakValidError("Nilai terlalu tinggi")
except NilaiTidakValidError as error:
print(error)
Hasil:
Nilai terlalu tinggi
class NilaiTidakValidError(Exception):
pass
nilai = int(input("Masukkan nilai: "))
if nilai < 0 or nilai > 100:
raise NilaiTidakValidError("Nilai harus berada antara 0 dan 100")
print("Nilai valid:", nilai)
Jika pengguna memasukkan `85`, program dapat melanjutkan. Jika pengguna memasukkan `120`, exception akan dihasilkan.
class NilaiTidakValidError(Exception):
pass
try:
nilai = int(input("Masukkan nilai: "))
if nilai < 0 or nilai > 100:
raise NilaiTidakValidError("Nilai harus antara 0 dan 100")
except ValueError:
print("Input harus berupa angka")
except NilaiTidakValidError as error:
print(error)
Terdapat dua kemungkinan kesalahan.
class UmurTidakValidError(Exception):
pass
def periksa_umur(umur):
if umur < 0:
raise UmurTidakValidError("Umur tidak boleh negatif")
return umur
try:
umur = periksa_umur(-5)
print("Umur:", umur)
except UmurTidakValidError as error:
print(error)
Fungsi tersebut memiliki aturan bahwa umur tidak boleh bernilai negatif.
class DataSiswaTidakValidError(Exception):
pass
def periksa_data(nama, umur):
if nama == "":
raise DataSiswaTidakValidError("Nama tidak boleh kosong")
if umur < 0:
raise DataSiswaTidakValidError("Umur tidak boleh negatif")
return True
try:
periksa_data("Andi", -2)
print("Data valid")
except DataSiswaTidakValidError as error:
print("Kesalahan:", error)
Exception khusus dapat digunakan untuk beberapa kondisi yang masih termasuk dalam kelompok kesalahan yang sama.
Contoh:
class NilaiTidakValidError(Exception):
pass
class UmurTidakValidError(Exception):
pass
class NamaTidakValidError(Exception):
pass
Setiap exception dapat digunakan untuk kondisi yang berbeda.
Contoh:
class NilaiTidakValidError(Exception):
pass
class UmurTidakValidError(Exception):
pass
try:
nilai = 120
if nilai > 100:
raise NilaiTidakValidError("Nilai terlalu tinggi")
except NilaiTidakValidError as error:
print(error)
except UmurTidakValidError as error:
print(error)
Python akan menjalankan `except` yang sesuai dengan exception yang terjadi.
Contoh:
class DataError(Exception):
pass
class NilaiError(DataError):
pass
class UmurError(DataError):
pass
Strukturnya:
Exception
|
+-- DataError
|
+-- NilaiError
|
+-- UmurError
Pendekatan ini berguna ketika beberapa exception memiliki hubungan yang sama.
Contoh:
class DataError(Exception):
pass
class NilaiError(DataError):
pass
class UmurError(DataError):
pass
try:
raise NilaiError("Nilai tidak valid")
except DataError as error:
print("Kesalahan data:", error)
`NilaiError` dapat ditangani oleh `except DataError` karena `NilaiError` merupakan turunan dari `DataError`.
Contohnya:
DataError
├── NilaiError
├── UmurError
└── NamaError
Dengan struktur tersebut, program dapat memilih apakah ingin menangani kesalahan secara khusus atau menangani seluruh kelompok kesalahan melalui exception induknya.
Contoh:
class NilaiTidakValidError(Exception):
def __init__(self, pesan="Nilai tidak valid"):
super().__init__(pesan)
Jika exception digunakan tanpa pesan:
raise NilaiTidakValidError()
pesan bawaan akan digunakan.
Contoh:
class NilaiTidakValidError(Exception):
def __init__(self, nilai):
self.nilai = nilai
super().__init__(f"Nilai {nilai} tidak valid")
Penggunaan:
try:
raise NilaiTidakValidError(120)
except NilaiTidakValidError as error:
print(error)
print("Nilai yang salah:", error.nilai)
Exception tersebut menyimpan nilai yang menyebabkan kesalahan.
class DiLuarRentangError(Exception):
pass
def periksa_nilai(nilai):
if nilai < 0 or nilai > 100:
raise DiLuarRentangError(
"Nilai harus berada antara 0 dan 100"
)
return True
try:
periksa_nilai(150)
except DiLuarRentangError as error:
print(error)
Cara tersebut membuat aturan program lebih jelas.
class DataKosongError(Exception):
pass
nama = ""
try:
if nama == "":
raise DataKosongError("Nama tidak boleh kosong")
except DataKosongError as error:
print(error)
class SaldoTidakCukupError(Exception):
pass
saldo = 50000
tarik = 75000
try:
if tarik > saldo:
raise SaldoTidakCukupError("Saldo tidak mencukupi")
saldo -= tarik
print("Sisa saldo:", saldo)
except SaldoTidakCukupError as error:
print(error)
Exception tersebut lebih mudah dipahami daripada menggunakan exception yang tidak berkaitan langsung dengan kondisi program.
class StokTidakCukupError(Exception):
pass
stok = 5
jumlah = 8
try:
if jumlah > stok:
raise StokTidakCukupError("Stok barang tidak mencukupi")
stok -= jumlah
print("Stok tersisa:", stok)
except StokTidakCukupError as error:
print(error)
class NilaiTidakValidError(Exception):
pass
try:
nilai = int(input("Masukkan nilai: "))
if nilai < 0 or nilai > 100:
raise NilaiTidakValidError(
"Nilai harus berada antara 0 dan 100"
)
except ValueError:
print("Input harus berupa angka")
except NilaiTidakValidError as error:
print(error)
else:
print("Nilai valid:", nilai)
finally:
print("Pemeriksaan selesai")
Struktur tersebut memberikan alur yang lengkap.
Pola dasarnya:
class NamaError(Exception):
pass
raise NamaError("Pesan kesalahan")
Artinya:
class DataTidakValidError(Exception):
pass
try:
data = ""
if data == "":
raise DataTidakValidError("Data tidak boleh kosong")
except DataTidakValidError as error:
print("Kesalahan:", error)
Pola tersebut dapat diterapkan pada berbagai jenis program.
Contohnya:
Exception
|
+-- DataError
| |
| +-- NamaError
| +-- UmurError
| +-- NilaiError
|
+-- TransaksiError
|
+-- SaldoTidakCukupError
+-- StokTidakCukupError
Struktur seperti ini membantu pengelolaan kesalahan dalam program yang memiliki banyak bagian.
Contoh:
try:
angka = int("abc")
except ValueError:
print("Input tidak valid")
Tidak perlu membuat exception baru hanya untuk menggantikan `ValueError` jika kebutuhan program memang sudah terpenuhi oleh exception tersebut.
class NilaiError:
pass
Lebih tepat:
class NilaiError(Exception):
pass
Dengan mewarisi `Exception`, kelas tersebut dapat digunakan sebagai exception.
class Error1(Exception):
pass
kurang memberikan informasi.
Lebih baik menggunakan nama yang menjelaskan kondisi:
class NilaiTidakValidError(Exception):
pass
Contoh:
raise NilaiTidakValidError()
dapat digunakan, tetapi pesan yang jelas akan membantu.
Contoh:
raise NilaiTidakValidError(
"Nilai harus berada antara 0 dan 100"
)
class NilaiTidakValidError(Exception):
pass
def periksa_nilai(nilai):
if nilai < 0 or nilai > 100:
raise NilaiTidakValidError(
"Nilai harus berada antara 0 dan 100"
)
return nilai
try:
nilai = int(input("Masukkan nilai siswa: "))
periksa_nilai(nilai)
except ValueError:
print("Input harus berupa angka")
except NilaiTidakValidError as error:
print(error)
else:
print("Nilai valid:", nilai)
finally:
print("Pemeriksaan selesai")
Program tersebut memiliki beberapa tahap:
class NilaiTidakValidError(Exception):
pass
class UmurTidakValidError(Exception):
pass
def periksa_data(nilai, umur):
if nilai < 0 or nilai > 100:
raise NilaiTidakValidError(
"Nilai harus berada antara 0 dan 100"
)
if umur < 6 or umur > 100:
raise UmurTidakValidError(
"Umur berada di luar rentang yang diperbolehkan"
)
try:
nilai = int(input("Masukkan nilai: "))
umur = int(input("Masukkan umur: "))
periksa_data(nilai, umur)
except ValueError:
print("Input harus berupa angka")
except NilaiTidakValidError as error:
print(error)
except UmurTidakValidError as error:
print(error)
else:
print("Data valid")
finally:
print("Pemeriksaan selesai")
Program tersebut memiliki dua exception khusus yang menangani aturan berbeda.
Kemudian buat:
NilaiError
UmurError
NamaError
sebagai turunannya.
Exception buatan sendiri dibuat menggunakan `class` yang biasanya mewarisi `Exception`. Setelah dibuat, exception dapat dihasilkan menggunakan `raise` dan ditangani menggunakan `try` dan `except`.
Contohnya, program pengelolaan nilai dapat menggunakan `NilaiTidakValidError`, sedangkan program transaksi dapat menggunakan `SaldoTidakCukupError` atau `StokTidakCukupError`.
Penggunaan exception buatan sendiri sebaiknya dilakukan secara terukur. Jika exception bawaan Python sudah sesuai, tidak perlu membuat exception baru. Namun, jika program memiliki aturan khusus, exception sendiri dapat membuat kode lebih jelas dan mudah dikelola.
Dengan memahami cara membuat, menghasilkan, menangkap, mengelompokkan, dan menggunakan exception buatan sendiri, kemampuan dalam membangun program Python yang terstruktur dapat berkembang lebih baik.
Pengertian Exception Buatan Sendiri
Exception buatan sendiri adalah jenis exception yang dibuat oleh programmer untuk menangani kondisi khusus dalam sebuah program. Sebagai contoh, sebuah program menentukan bahwa nilai ujian harus berada antara 0 sampai 100. Jika nilai yang dimasukkan adalah 150, program dapat menghasilkan exception khusus seperti:NilaiTidakValidError
Dengan nama tersebut, penyebab kesalahan dapat lebih mudah dipahami.
Pembuatan Exception Buatan
Exception buatan sendiri memiliki beberapa manfaat, antara lain:- Membuat kode lebih mudah dipahami.
- Memberikan nama kesalahan yang sesuai dengan kebutuhan program.
- Memisahkan jenis kesalahan berdasarkan aturan program.
- Mempermudah penanganan kesalahan.
- Membantu proses pencarian kesalahan.
- Membuat program yang besar lebih terstruktur.
- Memungkinkan satu jenis kesalahan khusus ditangani secara terpisah.
Contohnya, program pengelolaan siswa dapat memiliki exception khusus untuk nilai yang tidak valid.
Exception Bawaan dan Exception Buatan Sendiri
Python sudah menyediakan berbagai exception bawaan.Contoh:
ValueError
TypeError
IndexError
KeyError
ZeroDivisionError
Namun, programmer juga dapat membuat jenis exception baru.
Contoh:
class NilaiTidakValidError(Exception):
pass
Pada contoh tersebut, `NilaiTidakValidError` merupakan exception buatan sendiri.
Membuat Exception Sendiri dengan Class
Exception buatan sendiri dibuat menggunakan `class`.Bentuk dasarnya:
class NamaException(Exception):
pass
Contoh:
class NilaiTidakValidError(Exception):
pass
Kelas tersebut mewarisi `Exception`. Kata kunci `pass` digunakan karena belum ada perilaku tambahan yang perlu ditulis di dalam kelas.
Memahami Pewarisan Exception
Exception buatan sendiri biasanya dibuat sebagai turunan dari `Exception`.Contoh:
class DataTidakValidError(Exception):
pass
Artinya, `DataTidakValidError` memiliki kemampuan dasar sebagai exception karena berasal dari `Exception`. Pola sederhananya dapat digambarkan sebagai berikut:
Exception
|
+-- DataTidakValidError
Dengan cara tersebut, exception baru dapat digunakan bersama `try` dan `except`.
Menggunakan Exception Buatan Sendiri
Setelah dibuat, exception dapat digunakan dengan `raise`.Contoh:
class NilaiTidakValidError(Exception):
pass
nilai = 120
if nilai > 100:
raise NilaiTidakValidError
Ketika kondisi tersebut terpenuhi, Python menghasilkan `NilaiTidakValidError`.
Menggunakan Pesan Kesalahan
Exception buatan sendiri dapat diberikan pesan.class NilaiTidakValidError(Exception):
pass
nilai = 120
if nilai > 100:
raise NilaiTidakValidError("Nilai tidak boleh lebih dari 100")
Pesan tersebut memberikan informasi mengenai penyebab kesalahan.
Menangkap Exception Buatan Sendiri
Exception yang dibuat menggunakan `raise` dapat ditangani dengan `try` dan `except`.class NilaiTidakValidError(Exception):
pass
try:
nilai = 120
if nilai > 100:
raise NilaiTidakValidError("Nilai terlalu tinggi")
except NilaiTidakValidError as error:
print(error)
Hasil:
Nilai terlalu tinggi
Contoh Validasi Nilai
Misalnya program menerima nilai siswa dari 0 sampai 100.class NilaiTidakValidError(Exception):
pass
nilai = int(input("Masukkan nilai: "))
if nilai < 0 or nilai > 100:
raise NilaiTidakValidError("Nilai harus berada antara 0 dan 100")
print("Nilai valid:", nilai)
Jika pengguna memasukkan `85`, program dapat melanjutkan. Jika pengguna memasukkan `120`, exception akan dihasilkan.
Menangani Input yang Salah
Program dapat menggabungkan exception bawaan dengan exception buatan sendiri.class NilaiTidakValidError(Exception):
pass
try:
nilai = int(input("Masukkan nilai: "))
if nilai < 0 or nilai > 100:
raise NilaiTidakValidError("Nilai harus antara 0 dan 100")
except ValueError:
print("Input harus berupa angka")
except NilaiTidakValidError as error:
print(error)
Terdapat dua kemungkinan kesalahan.
- `ValueError` digunakan ketika input bukan angka.
- `NilaiTidakValidError` digunakan ketika angka berada di luar rentang yang diperbolehkan.
Exception Buatan Sendiri di Dalam Fungsi
Exception khusus dapat digunakan di dalam fungsi.class UmurTidakValidError(Exception):
pass
def periksa_umur(umur):
if umur < 0:
raise UmurTidakValidError("Umur tidak boleh negatif")
return umur
try:
umur = periksa_umur(-5)
print("Umur:", umur)
except UmurTidakValidError as error:
print(error)
Fungsi tersebut memiliki aturan bahwa umur tidak boleh bernilai negatif.
Menggunakan Exception dengan Data Siswa
Contoh berikut digunakan untuk memeriksa data siswa.class DataSiswaTidakValidError(Exception):
pass
def periksa_data(nama, umur):
if nama == "":
raise DataSiswaTidakValidError("Nama tidak boleh kosong")
if umur < 0:
raise DataSiswaTidakValidError("Umur tidak boleh negatif")
return True
try:
periksa_data("Andi", -2)
print("Data valid")
except DataSiswaTidakValidError as error:
print("Kesalahan:", error)
Exception khusus dapat digunakan untuk beberapa kondisi yang masih termasuk dalam kelompok kesalahan yang sama.
Membuat Beberapa Exception
Program yang lebih besar dapat memiliki beberapa exception khusus.Contoh:
class NilaiTidakValidError(Exception):
pass
class UmurTidakValidError(Exception):
pass
class NamaTidakValidError(Exception):
pass
Setiap exception dapat digunakan untuk kondisi yang berbeda.
Menangani Beberapa Exception Khusus
Berikut diberikan contoh untuk menangani beberapa exception khusus.
Contoh:
class NilaiTidakValidError(Exception):
pass
class UmurTidakValidError(Exception):
pass
try:
nilai = 120
if nilai > 100:
raise NilaiTidakValidError("Nilai terlalu tinggi")
except NilaiTidakValidError as error:
print(error)
except UmurTidakValidError as error:
print(error)
Python akan menjalankan `except` yang sesuai dengan exception yang terjadi.
Membuat Exception Bertingkat
Exception buatan sendiri juga dapat dibuat dalam bentuk tingkatan.Contoh:
class DataError(Exception):
pass
class NilaiError(DataError):
pass
class UmurError(DataError):
pass
Strukturnya:
Exception
|
+-- DataError
|
+-- NilaiError
|
+-- UmurError
Pendekatan ini berguna ketika beberapa exception memiliki hubungan yang sama.
Menangkap Exception Induk
Jika beberapa exception berasal dari exception induk yang sama, exception tersebut dapat ditangani melalui kelas induknya.Contoh:
class DataError(Exception):
pass
class NilaiError(DataError):
pass
class UmurError(DataError):
pass
try:
raise NilaiError("Nilai tidak valid")
except DataError as error:
print("Kesalahan data:", error)
`NilaiError` dapat ditangani oleh `except DataError` karena `NilaiError` merupakan turunan dari `DataError`.
Keuntungan Membuat Exception Induk
Membuat exception induk berguna ketika program memiliki banyak jenis kesalahan yang masih berada dalam kelompok yang sama.Contohnya:
DataError
├── NilaiError
├── UmurError
└── NamaError
Dengan struktur tersebut, program dapat memilih apakah ingin menangani kesalahan secara khusus atau menangani seluruh kelompok kesalahan melalui exception induknya.
Menambahkan Pesan Default
Exception buatan sendiri dapat memiliki pesan bawaan.Contoh:
class NilaiTidakValidError(Exception):
def __init__(self, pesan="Nilai tidak valid"):
super().__init__(pesan)
Jika exception digunakan tanpa pesan:
raise NilaiTidakValidError()
pesan bawaan akan digunakan.
Menambahkan Informasi Tambahan
Exception buatan sendiri juga dapat menyimpan informasi tambahan.Contoh:
class NilaiTidakValidError(Exception):
def __init__(self, nilai):
self.nilai = nilai
super().__init__(f"Nilai {nilai} tidak valid")
Penggunaan:
try:
raise NilaiTidakValidError(120)
except NilaiTidakValidError as error:
print(error)
print("Nilai yang salah:", error.nilai)
Exception tersebut menyimpan nilai yang menyebabkan kesalahan.
Exception untuk Pemeriksaan Batas Nilai
Contoh lain dapat digunakan untuk memastikan nilai berada dalam rentang tertentu.class DiLuarRentangError(Exception):
pass
def periksa_nilai(nilai):
if nilai < 0 or nilai > 100:
raise DiLuarRentangError(
"Nilai harus berada antara 0 dan 100"
)
return True
try:
periksa_nilai(150)
except DiLuarRentangError as error:
print(error)
Cara tersebut membuat aturan program lebih jelas.
Exception untuk Data Kosong
Exception khusus dapat digunakan ketika data wajib belum diisi.class DataKosongError(Exception):
pass
nama = ""
try:
if nama == "":
raise DataKosongError("Nama tidak boleh kosong")
except DataKosongError as error:
print(error)
Exception untuk Saldo
Dalam program keuangan sederhana, exception khusus dapat digunakan ketika saldo tidak mencukupi.class SaldoTidakCukupError(Exception):
pass
saldo = 50000
tarik = 75000
try:
if tarik > saldo:
raise SaldoTidakCukupError("Saldo tidak mencukupi")
saldo -= tarik
print("Sisa saldo:", saldo)
except SaldoTidakCukupError as error:
print(error)
Exception tersebut lebih mudah dipahami daripada menggunakan exception yang tidak berkaitan langsung dengan kondisi program.
Exception untuk Stok Barang
Program pengelolaan barang juga dapat menggunakan exception khusus.class StokTidakCukupError(Exception):
pass
stok = 5
jumlah = 8
try:
if jumlah > stok:
raise StokTidakCukupError("Stok barang tidak mencukupi")
stok -= jumlah
print("Stok tersisa:", stok)
except StokTidakCukupError as error:
print(error)
Exception dengan try, except, else, dan finally
Exception buatan sendiri dapat digunakan bersama seluruh struktur penanganan exception.class NilaiTidakValidError(Exception):
pass
try:
nilai = int(input("Masukkan nilai: "))
if nilai < 0 or nilai > 100:
raise NilaiTidakValidError(
"Nilai harus berada antara 0 dan 100"
)
except ValueError:
print("Input harus berupa angka")
except NilaiTidakValidError as error:
print(error)
else:
print("Nilai valid:", nilai)
finally:
print("Pemeriksaan selesai")
Struktur tersebut memberikan alur yang lengkap.
- `try` menjalankan pemeriksaan.
- `except` menangani kesalahan.
- `else` dijalankan jika data valid.
- `finally` dijalankan setelah proses selesai.
Exception Buatan Sendiri dan raise
Hubungan antara exception buatan sendiri dan `raise` sangat penting.Pola dasarnya:
class NamaError(Exception):
pass
raise NamaError("Pesan kesalahan")
Artinya:
- Membuat kelas exception.
- Menurunkannya dari `Exception`.
- Menghasilkan exception menggunakan `raise`.
- Menangkapnya menggunakan `except` jika diperlukan.
Pola Lengkap
Contoh pola lengkap:class DataTidakValidError(Exception):
pass
try:
data = ""
if data == "":
raise DataTidakValidError("Data tidak boleh kosong")
except DataTidakValidError as error:
print("Kesalahan:", error)
Pola tersebut dapat diterapkan pada berbagai jenis program.
Exception Buatan Sendiri dalam Program Besar
Pada program sederhana, satu atau dua exception khusus mungkin sudah cukup. Pada program yang lebih besar, exception dapat dikelompokkan berdasarkan bagian program.Contohnya:
Exception
|
+-- DataError
| |
| +-- NamaError
| +-- UmurError
| +-- NilaiError
|
+-- TransaksiError
|
+-- SaldoTidakCukupError
+-- StokTidakCukupError
Struktur seperti ini membantu pengelolaan kesalahan dalam program yang memiliki banyak bagian.
Waktu Penggunaan Exception Buatan Sendiri
Exception buatan sendiri dapat digunakan ketika:- Program memiliki aturan khusus.
- Exception bawaan tidak cukup menggambarkan kondisi kesalahan.
- Beberapa kesalahan perlu dikelompokkan.
- Pesan kesalahan perlu disesuaikan.
- Program memiliki banyak fungsi dan bagian.
- Kesalahan tertentu perlu ditangani secara khusus.
- Nama exception dapat membuat kode lebih mudah dipahami.
Waktu Untuk Tidak Menggunakan Exception Sendiri
Tidak semua kondisi membutuhkan exception baru. Jika exception bawaan Python sudah sesuai, exception tersebut dapat digunakan.Contoh:
try:
angka = int("abc")
except ValueError:
print("Input tidak valid")
Tidak perlu membuat exception baru hanya untuk menggantikan `ValueError` jika kebutuhan program memang sudah terpenuhi oleh exception tersebut.
Perbedaan Exception Bawaan dan Buatan Sendiri
| Jenis | Contoh | Kegunaan |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Kesalahan yang Sering Terjadi
Berikut dijelaskan beberapa contoh kesalahan yang sering terjadi.Tidak Mewarisi Exception
Kesalahan:class NilaiError:
pass
Lebih tepat:
class NilaiError(Exception):
pass
Dengan mewarisi `Exception`, kelas tersebut dapat digunakan sebagai exception.
Menggunakan Nama yang Tidak Jelas
Nama:class Error1(Exception):
pass
kurang memberikan informasi.
Lebih baik menggunakan nama yang menjelaskan kondisi:
class NilaiTidakValidError(Exception):
pass
Membuat Terlalu Banyak Exception
Tidak semua kondisi harus memiliki exception sendiri. Gunakan exception bawaan jika sudah sesuai dengan kebutuhan.Tidak Memberikan Pesan yang Jelas
Berikut contoh exception yang tidak memberikan pesan yang jelas.
raise NilaiTidakValidError()
dapat digunakan, tetapi pesan yang jelas akan membantu.
Contoh:
raise NilaiTidakValidError(
"Nilai harus berada antara 0 dan 100"
)
Praktik Baik
Beberapa hal yang dapat diperhatikan ketika membuat exception sendiri:- Gunakan nama yang jelas.
- Biasanya akhiri nama dengan `Error`.
- Turunkan kelas dari `Exception` atau exception yang sesuai.
- Gunakan `raise` untuk menghasilkan exception.
- Gunakan pesan yang menjelaskan penyebab kesalahan.
- Buat exception khusus jika memang memberikan manfaat.
- Kelompokkan exception yang memiliki hubungan menggunakan kelas induk.
- Hindari membuat exception baru jika exception bawaan sudah mencukupi.
Contoh Program Lengkap
Berikut contoh program pengelolaan nilai siswa yang menggunakan exception buatan sendiri.class NilaiTidakValidError(Exception):
pass
def periksa_nilai(nilai):
if nilai < 0 or nilai > 100:
raise NilaiTidakValidError(
"Nilai harus berada antara 0 dan 100"
)
return nilai
try:
nilai = int(input("Masukkan nilai siswa: "))
periksa_nilai(nilai)
except ValueError:
print("Input harus berupa angka")
except NilaiTidakValidError as error:
print(error)
else:
print("Nilai valid:", nilai)
finally:
print("Pemeriksaan selesai")
Program tersebut memiliki beberapa tahap:
- Membuat `NilaiTidakValidError`.
- Membuat fungsi `periksa_nilai()`.
- Memeriksa nilai yang dimasukkan.
- Menghasilkan exception jika nilai tidak sesuai.
- Menangani input yang bukan angka.
- Menangani nilai yang berada di luar rentang.
- Menampilkan hasil jika nilai valid.
- Menampilkan pesan setelah pemeriksaan selesai.
Contoh dengan Beberapa Exception
Berikut diberikan beberapa contoh exception.class NilaiTidakValidError(Exception):
pass
class UmurTidakValidError(Exception):
pass
def periksa_data(nilai, umur):
if nilai < 0 or nilai > 100:
raise NilaiTidakValidError(
"Nilai harus berada antara 0 dan 100"
)
if umur < 6 or umur > 100:
raise UmurTidakValidError(
"Umur berada di luar rentang yang diperbolehkan"
)
try:
nilai = int(input("Masukkan nilai: "))
umur = int(input("Masukkan umur: "))
periksa_data(nilai, umur)
except ValueError:
print("Input harus berupa angka")
except NilaiTidakValidError as error:
print(error)
except UmurTidakValidError as error:
print(error)
else:
print("Data valid")
finally:
print("Pemeriksaan selesai")
Program tersebut memiliki dua exception khusus yang menangani aturan berbeda.
Latihan
Berikut beberapa latihan yang dapat digunakan untuk memperkuat pemahaman.Latihan 1
Buat exception bernama `NilaiTidakValidError`.Latihan 2
Gunakan exception tersebut untuk memastikan nilai berada antara 0 dan 100.Latihan 3
Buat exception bernama `UmurTidakValidError`.Latihan 4
Buat fungsi yang menghasilkan `UmurTidakValidError` jika umur kurang dari nol.Latihan 5
Buat exception `SaldoTidakCukupError` untuk program penarikan uang.Latihan 6
Buat exception `StokTidakCukupError` untuk program penjualan barang.Latihan 7
Buat satu exception induk bernama `DataError`.Kemudian buat:
NilaiError
UmurError
NamaError
sebagai turunannya.
Latihan 8
Gunakan `try`, `except`, `else`, dan `finally` bersama exception buatan sendiri.Latihan 9
Buat exception yang menyimpan nilai penyebab kesalahan.Latihan 10
Buat program data siswa yang menggunakan minimal dua exception buatan sendiri.Kesimpulan
Exception buatan sendiri memungkinkan programmer membuat jenis kesalahan yang sesuai dengan kebutuhan sebuah program. Fitur ini berguna ketika exception bawaan Python belum cukup menggambarkan kondisi tertentu.Exception buatan sendiri dibuat menggunakan `class` yang biasanya mewarisi `Exception`. Setelah dibuat, exception dapat dihasilkan menggunakan `raise` dan ditangani menggunakan `try` dan `except`.
Contohnya, program pengelolaan nilai dapat menggunakan `NilaiTidakValidError`, sedangkan program transaksi dapat menggunakan `SaldoTidakCukupError` atau `StokTidakCukupError`.
Penggunaan exception buatan sendiri sebaiknya dilakukan secara terukur. Jika exception bawaan Python sudah sesuai, tidak perlu membuat exception baru. Namun, jika program memiliki aturan khusus, exception sendiri dapat membuat kode lebih jelas dan mudah dikelola.
Dengan memahami cara membuat, menghasilkan, menangkap, mengelompokkan, dan menggunakan exception buatan sendiri, kemampuan dalam membangun program Python yang terstruktur dapat berkembang lebih baik.
Artikel ini akan dibaca oleh: Enggar Maulia, Erika Aisyah Putri, Eva Elvina Fitriani, Ezar Gatafa Aryo Zahari, dan Fadiya Hanun Lailatul Arsy.
40 komentar untuk "Exception Buatan Sendiri 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 -
Apa itu CPC di AdSense?
BalasHapusCPC (Cost Per Click) adalah biaya yang Anda bayarkan setiap kali seseorang mengklik iklan di situs web Anda. Semakin tinggi CPC, semakin banyak uang yang Anda keluarkan untuk setiap klik.
HapusMengapa CPC saya di AdSense turun?
BalasHapusAda beberapa alasan mengapa CPC Anda mungkin turun, antara lain:
Hapus1. Perubahan pada algoritma AdSense: Google Adsense terus memperbarui algoritmanya untuk meningkatkan relevansi iklan dan pengalaman pengguna. Hal ini dapat menyebabkan perubahan pada CPC Anda, baik naik maupun turun.
2. Penurunan minat pada niche Anda: Jika minat terhadap niche Anda menurun, pengiklan mungkin akan menawar lebih sedikit untuk iklan di situs web Anda.
3. Penurunan kualitas lalu lintas: Jika lalu lintas ke situs web Anda berasal dari sumber yang tidak berkualitas, seperti bot atau clickbait, hal ini dapat menyebabkan CPC Anda turun.
4. Penurunan rasio klik-tayang (CTR): Jika CTR Anda turun, berarti lebih sedikit orang yang mengklik iklan di situs web Anda. Hal ini dapat menyebabkan CPC Anda turun karena pengiklan akan menawar lebih sedikit untuk iklan yang tidak banyak diklik.
5. Persaingan yang meningkat: Jika semakin banyak situs web yang bersaing untuk kata kunci yang sama, pengiklan mungkin akan menawar lebih sedikit untuk iklan di semua situs web tersebut.
Bagaimana cara mengetahui jika CPC saya turun?
BalasHapusAnda dapat memantau CPC Anda di akun AdSense Anda. Buka Laporan > Performa dan pilih Dimensi > CPC. Anda dapat melihat CPC rata-rata untuk seluruh situs web Anda, atau untuk kata kunci, penempatan iklan, dan perangkat individual.
HapusApa yang dapat saya lakukan untuk mengatasi penurunan CPC?
BalasHapusAda beberapa hal yang dapat Anda lakukan untuk mengatasi penurunan CPC:
Hapus1. Tingkatkan kualitas konten Anda: Pastikan konten Anda relevan, informatif, dan menarik bagi audiens target Anda. Konten berkualitas tinggi akan menarik lebih banyak pengunjung yang berkualitas, yang akan meningkatkan CTR dan CPC Anda.
2. Optimalkan penempatan iklan Anda: Eksperimen dengan berbagai penempatan iklan untuk melihat mana yang menghasilkan performa terbaik. Anda juga dapat menggunakan alat seperti Google AdSense Heatmap untuk melihat di mana pengunjung Anda paling sering mengklik.
3. Targetkan audiens Anda dengan tepat: Gunakan penargetan iklan AdSense untuk menayangkan iklan kepada orang-orang yang paling mungkin tertarik dengan produk atau layanan Anda. Hal ini dapat membantu meningkatkan CTR dan CPC Anda.
4. Gunakan kata kunci yang relevan: Pastikan Anda menggunakan kata kunci yang relevan dalam konten dan iklan Anda. Hal ini akan membantu menarik pengunjung yang tertarik dengan niche Anda, yang akan meningkatkan CTR dan CPC Anda.
5. Pantau tren industri Anda: Tetap up-to-date dengan tren terbaru di industri Anda. Hal ini dapat membantu Anda membuat konten yang lebih relevan dan menarik, yang dapat meningkatkan CTR dan CPC Anda.
Apakah ada cara lain untuk meningkatkan penghasilan AdSense saya selain meningkatkan CPC?
BalasHapusYa, ada beberapa cara lain untuk meningkatkan penghasilan AdSense Anda, antara lain:
Hapus1. Meningkatkan traffic website: Semakin banyak traffic yang Anda dapatkan, semakin banyak peluang Anda untuk mendapatkan klik iklan.
2. Gunakan berbagai format iklan: AdSense menawarkan berbagai format iklan, seperti iklan teks, iklan gambar, dan iklan video. Cobalah berbagai format iklan untuk melihat mana yang menghasilkan performa terbaik di situs web Anda.
3. Berpartisipasi dalam program AdSense lainnya: Google menawarkan berbagai program AdSense lainnya, seperti AdSense for Search dan AdSense for Games. Program-program ini dapat membantu Anda menghasilkan lebih banyak uang dari situs web Anda.
Apakah penurunan CPC bersifat permanen?
BalasHapusTidak, penurunan CPC tidak selalu permanen. Dengan melakukan langkah-langkah untuk meningkatkan kualitas konten, penargetan iklan, dan SEO Anda, Anda dapat meningkatkan CPC Anda kembali.
HapusBerapa lama waktu yang dibutuhkan untuk melihat hasil dari upaya saya untuk meningkatkan CPC?
BalasHapusWaktu yang dibutuhkan untuk melihat hasil dari upaya Anda untuk meningkatkan CPC dapat bervariasi. Namun, umumnya Anda akan mulai melihat hasil dalam beberapa minggu atau bulan.
HapusApakah ada alat yang dapat membantu saya meningkatkan CPC?
BalasHapusYa, ada beberapa alat yang dapat membantu Anda meningkatkan CPC, antara lain:
Hapus1. Google Keyword Planner: Alat ini dapat membantu Anda menemukan kata kunci yang relevan dengan niche Anda dan yang memiliki volume pencarian yang tinggi.
2. Google Analytics: Alat ini dapat membantu Anda melacak lalu lintas ke situs web Anda dan melihat dari mana pengunjung Anda berasal. Hal ini dapat membantu Anda menargetkan iklan Anda dengan lebih baik.
3. AdSense Heatmap: Alat ini dapat membantu Anda melihat di mana pengunjung Anda paling sering mengklik. Hal ini dapat membantu Anda mengoptimalkan penempatan.
Apakah saya boleh menggunakan klikbait untuk meningkatkan CTR?
BalasHapusTidak, Anda tidak boleh menggunakan klikbait untuk meningkatkan CTR. Klikbait adalah strategi untuk menarik perhatian orang agar mengklik tautan, tetapi sebenarnya tautan tersebut tidak memberikan apa yang mereka harapkan. Google dapat penalti situs web yang menggunakan klikbait, yang dapat menyebabkan penurunan traffic dan CPC.
HapusApakah saya boleh membeli traffic untuk meningkatkan penghasilan AdSense?
BalasHapusTidak, Anda tidak boleh membeli traffic untuk meningkatkan penghasilan AdSense. Google melarang pembelian traffic, dan akun AdSense Anda dapat ditangguhkan atau dihapus jika Anda ketahuan melakukannya.
HapusApakah ada cara untuk mengetahui berapa banyak uang yang dihasilkan pesaing saya dari AdSense?
BalasHapusTidak, Anda tidak dapat mengetahui berapa banyak uang yang dihasilkan pesaing Anda dari AdSense. Google merahasiakan informasi pendapatan AdSense.
HapusApakah saya dapat menggunakan akun AdSense yang sama di beberapa situs web?
BalasHapusYa, Anda dapat menggunakan akun AdSense yang sama di beberapa situs web. Namun, Anda harus memastikan bahwa semua situs web Anda mematuhi kebijakan AdSense.
HapusApakah saya dapat mengubah niche situs web saya untuk meningkatkan CPC?
BalasHapusYa, Anda dapat mengubah niche situs web Anda untuk meningkatkan CPC. Namun, Anda harus memastikan bahwa niche baru Anda relevan dengan audiens target Anda dan Anda memiliki pengetahuan dan keahlian untuk membuat konten yang berkualitas tinggi di niche tersebut.
HapusApakah saya dapat menggunakan VPN untuk menyembunyikan lokasi saya dari Google AdSense?
BalasHapusTidak, Anda tidak boleh menggunakan VPN untuk menyembunyikan lokasi Anda dari Google AdSense. Google dapat mendeteksi dan penalti akun AdSense yang menggunakan VPN.
HapusApakah saya dapat menggunakan bot untuk mengklik iklan AdSense saya?
BalasHapusTidak, Anda tidak boleh menggunakan bot untuk mengklik iklan AdSense Anda. Google dapat mendeteksi dan penalti akun AdSense yang menggunakan bot.
HapusApa yang akan terjadi jika akun AdSense saya ditangguhkan?
BalasHapusJika akun AdSense Anda ditangguhkan, Anda tidak akan dapat lagi menayangkan iklan AdSense di situs web Anda. Anda juga tidak akan dapat mengakses penghasilan AdSense Anda yang ada.
HapusBagaimana cara mengajukan banding jika akun AdSense saya ditangguhkan?
BalasHapusAnda dapat mengajukan banding jika akun AdSense Anda ditangguhkan dengan mengunjungi https://support.google.com/adsense/answer/9485926?hl=en.
HapusDi mana saya dapat menemukan informasi lebih lanjut tentang AdSense?
BalasHapusAnda dapat menemukan informasi lebih lanjut tentang AdSense di https://adsense.google.com/start/.
HapusApakah ada komunitas online tempat saya dapat berdiskusi tentang AdSense dengan orang lain?
BalasHapusYa, ada beberapa komunitas online tempat Anda dapat berdiskusi tentang AdSense dengan orang lain. Salah satu komunitas yang populer adalah forum AdSense di Google Webmaster Central: https://developers.google.com/search.
HapusApakah Anda memiliki tips lain untuk meningkatkan penghasilan AdSense saya?
BalasHapusYa, berikut adalah beberapa tips lain untuk meningkatkan penghasilan AdSense Anda:
Hapus1. Buat konten yang selalu hijau: Konten yang selalu hijau adalah konten yang relevan dan bermanfaat untuk waktu yang lama. Konten ini akan terus menarik traffic dan menghasilkan klik iklan dari waktu ke waktu.
2. Promosikan situs web Anda di media sosial: Media sosial adalah cara yang bagus untuk mempromosikan situs web Anda dan menjangkau audiens yang lebih luas.
3. Berpartisipasi dalam program afiliasi: Program afiliasi adalah cara yang bagus untuk menghasilkan uang tambahan dari situs web Anda. Dengan mempromosikan produk atau layanan afiliasi, Anda dapat memperoleh komisi setiap kali seseorang membeli produk atau layanan tersebut melalui tautan Anda.