Eksepsi #
Pengertian #
Eksepsi (exception) dalam Python adalah mekanisme yang digunakan untuk menangani kesalahan yang terjadi saat program berjalan. Ketika terjadi kesalahan, Python akan memunculkan eksepsi yang dapat ditangkap dan ditangani untuk mencegah program berhenti secara tiba-tiba.
Sintaks untuk Menangani Eksepsi #
Try-Except #
Blok try-except
digunakan untuk menangkap dan menangani eksepsi. Blok try
berisi kode yang mungkin menimbulkan eksepsi, sedangkan blok except
berisi kode yang dijalankan jika eksepsi terjadi.
try:
# Kode yang mungkin menimbulkan eksepsi
hasil = 10 / 0
except ZeroDivisionError:
# Kode untuk menangani eksepsi
print("Terjadi kesalahan: pembagian dengan nol tidak diperbolehkan.")
Try-Except-Finally #
Blok finally
berisi kode yang akan selalu dijalankan, baik terjadi eksepsi maupun tidak. Ini berguna untuk membersihkan sumber daya seperti menutup file atau koneksi jaringan.
try:
file = open('data.txt', 'r')
data = file.read()
except FileNotFoundError:
print("File tidak ditemukan.")
finally:
file.close()
print("File telah ditutup.")
Try-Except-Else #
Blok else
berisi kode yang akan dijalankan jika tidak terjadi eksepsi dalam blok try
.
try:
hasil = 10 / 2
except ZeroDivisionError:
print("Terjadi kesalahan: pembagian dengan nol tidak diperbolehkan.")
else:
print(f"Hasil pembagian: {hasil}")
Membuat Eksepsi Sendiri #
Kita juga dapat membuat eksepsi sendiri dengan menggunakan kata kunci raise
.
def cek_umur(umur):
if umur < 18:
raise ValueError("Umur harus lebih dari atau sama dengan 18.")
return True
try:
cek_umur(16)
except ValueError as e:
print(e)
Contoh Penggunaan Eksepsi #
Berikut adalah contoh yang lebih lengkap tentang penggunaan eksepsi dalam Python:
def bagi(a, b):
try:
hasil = a / b
except ZeroDivisionError:
print("Terjadi kesalahan: pembagian dengan nol tidak diperbolehkan.")
except TypeError:
print("Terjadi kesalahan: pastikan kedua nilai adalah angka.")
else:
print(f"Hasil pembagian: {hasil}")
finally:
print("Operasi pembagian selesai.")
bagi(10, 2) # Output: Hasil pembagian: 5.0
# Operasi pembagian selesai.
bagi(10, 0) # Output: Terjadi kesalahan: pembagian dengan nol tidak diperbolehkan.
# Operasi pembagian selesai.
bagi(10, 'a') # Output: Terjadi kesalahan: pastikan kedua nilai adalah angka.
# Operasi pembagian selesai.
Eksepsi Kustom #
Membuat kelas eksepsi (exception) sendiri di Python memungkinkan kita untuk mendefinisikan jenis kesalahan yang lebih spesifik sesuai dengan kebutuhan aplikasi kita. Kelas eksepsi kustom ini biasanya dibuat dengan menginherit dari kelas dasar Exception
.
Pembuatan #
class CustomError(Exception):
"""Kelas eksepsi kustom untuk contoh kesalahan umum"""
pass
def cek_positif(n):
if n < 0:
raise CustomError("Angka harus positif.")
return True
try:
cek_positif(-5)
except CustomError as e:
print(e)
Atribut Tambahan #
class CustomErrorWithInfo(Exception):
"""Kelas eksepsi kustom dengan atribut tambahan"""
def __init__(self, message, code):
super().__init__(message)
self.code = code
def cek_positif(n):
if n < 0:
raise CustomErrorWithInfo("Angka harus positif.", 1001)
return True
try:
cek_positif(-5)
except CustomErrorWithInfo as e:
print(f"Error: {e}, Code: {e.code}")
Penjelasan Tambahan #
try-except
#
try
: Blok ini berisi kode yang mungkin menimbulkan eksepsi.except
: Blok ini berisi kode yang akan dijalankan jika eksepsi terjadi. Kita dapat menangkap tipe eksepsi tertentu dengan menyebutkan tipe eksepsi setelah kata kunciexcept
.else
: Blok ini berisi kode yang akan dijalankan jika tidak terjadi eksepsi dalam bloktry
.finally
: Blok ini berisi kode yang akan selalu dijalankan, baik terjadi eksepsi maupun tidak.raise
: Digunakan untuk memunculkan eksepsi secara manual.
Eksepsi Kustom #
- Inheritance dari
Exception
: Kelas eksepsi kustom harus menginherit dariException
atau subkelasnya. - Konstruktor (
__init__
): Jika ingin menambahkan atribut tambahan, override konstruktor (__init__
) dan panggil konstruktor kelas dasar (super().__init__(message)
). - Memunculkan Eksepsi Kustom: Gunakan kata kunci
raise
untuk memunculkan eksepsi kustom dalam kondisi tertentu.
Kesimpulan #
Dengan menggunakan mekanisme penanganan eksepsi, kita dapat membuat program yang lebih robust dan dapat menangani kesalahan dengan cara yang lebih elegan dan terkontrol.