unisbadri.com » Python Java Golang Typescript Kotlin Ruby Rust Dart PHP
Eksepsi

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 #

  1. try: Blok ini berisi kode yang mungkin menimbulkan eksepsi.
  2. except: Blok ini berisi kode yang akan dijalankan jika eksepsi terjadi. Kita dapat menangkap tipe eksepsi tertentu dengan menyebutkan tipe eksepsi setelah kata kunci except.
  3. else: Blok ini berisi kode yang akan dijalankan jika tidak terjadi eksepsi dalam blok try.
  4. finally: Blok ini berisi kode yang akan selalu dijalankan, baik terjadi eksepsi maupun tidak.
  5. raise: Digunakan untuk memunculkan eksepsi secara manual.

Eksepsi Kustom #

  1. Inheritance dari Exception: Kelas eksepsi kustom harus menginherit dari Exception atau subkelasnya.
  2. Konstruktor (__init__): Jika ingin menambahkan atribut tambahan, override konstruktor (__init__) dan panggil konstruktor kelas dasar (super().__init__(message)).
  3. 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.

« Interface
List »