Exception Handling dengan Try-Except di Python

Post image

Exception Handling adalah salah satu konsep penting dalam pemrograman Python yang wajib kamu kuasai, terutama jika ingin membuat program yang robust dan tidak mudah error. Dengan exception handling, kamu bisa mengantisipasi error yang mungkin terjadi saat program berjalan, sehingga program tidak langsung berhenti (crash) dan bisa memberikan pesan yang lebih ramah ke user.

Apa Itu Exception?

Exception (pengecualian) adalah kondisi error yang terjadi saat program dijalankan (runtime), misalnya file tidak ditemukan, pembagian dengan nol, atau input yang tidak valid. Jika exception tidak ditangani, program akan langsung berhenti dan menampilkan pesan error (traceback) ke layar.

Contoh error tanpa exception handling:

angka = int(input("Masukkan angka: "))
print(f"Hasil pembagian: {10 / angka}")

Jika user memasukkan 0 atau input yang bukan angka, program akan error seperti ini:

Masukkan angka: 0
Traceback (most recent call last):
  File "contoh.py", line 2, in <module>
    print(f"Hasil pembagian: {10 / angka}")
ZeroDivisionError: division by zero

Mengapa Perlu Exception Handling?

  • Mencegah program crash: Program tetap berjalan meski terjadi error.
  • Memberikan pesan error yang jelas: User tahu apa yang salah, bukan hanya melihat traceback yang membingungkan.
  • Membuat program lebih profesional dan user-friendly.

Dasar Exception Handling dengan Try-Except

Python menyediakan blok try-except untuk menangani exception. Cara kerjanya:

  1. Kode di dalam blok try akan dijalankan.
  2. Jika terjadi error (exception), eksekusi langsung lompat ke blok except.
  3. Jika tidak ada error, blok except dilewati.

Contoh Sederhana

try:
    angka = int(input("Masukkan angka: "))
    hasil = 10 / angka
    print(f"Hasil pembagian: {hasil}")
except:
    print("Terjadi error! Pastikan input angka dan tidak nol.")

Penjelasan:

  • Jika user memasukkan angka selain 0, program berjalan normal.
  • Jika user memasukkan 0 atau input bukan angka, program tidak crash, tapi menampilkan pesan ramah.

Menangani Exception Tertentu

Sebaiknya, tangani exception secara spesifik agar tahu error apa yang terjadi. Contoh:

try:
    angka = int(input("Masukkan angka: "))
    hasil = 10 / angka
    print(f"Hasil pembagian: {hasil}")
except ValueError:
    print("Input harus berupa angka!")
except ZeroDivisionError:
    print("Tidak bisa membagi dengan nol!")

Penjelasan:

  • ValueError terjadi jika input bukan angka.
  • ZeroDivisionError terjadi jika user memasukkan 0.

Blok else dan finally

  • else: Akan dijalankan jika tidak ada exception.
  • finally: Akan selalu dijalankan, baik ada error atau tidak (biasanya untuk cleanup, misal menutup file).

Contoh:

try:
    angka = int(input("Masukkan angka: "))
    hasil = 10 / angka
except ValueError:
    print("Input harus angka!")
except ZeroDivisionError:
    print("Tidak boleh nol!")
else:
    print(f"Hasil: {hasil}")
finally:
    print("Program selesai.")

Output jika input valid:

Masukkan angka: 2
Hasil: 5.0
Program selesai.

Jika input salah:

Masukkan angka: a
Input harus angka!
Program selesai.

Exception Umum di Python

Beberapa exception yang sering ditemui:

  • ValueError: Tipe data tidak sesuai (misal, input string padahal harus angka).
  • ZeroDivisionError: Pembagian dengan nol.
  • FileNotFoundError: File tidak ditemukan saat membuka file.
  • TypeError: Operasi pada tipe data yang tidak sesuai.
  • IndexError: Mengakses indeks list yang tidak ada.

Contoh menangani file:

try:
    with open("data.txt", "r") as file:
        print(file.read())
except FileNotFoundError:
    print("File tidak ditemukan!")

Menangkap Exception ke Variabel

Kamu bisa menangkap pesan error ke variabel dengan as, lalu menampilkannya:

try:
    angka = int(input("Masukkan angka: "))
    print(10 / angka)
except Exception as e:
    print(f"Terjadi error: {e}")

Membuat Exception Sendiri (Custom Exception)

Kadang kamu ingin membuat exception khusus sesuai kebutuhan aplikasi. Caranya, buat class baru yang mewarisi dari Exception.

class NilaiNegatifError(Exception):
    pass

def cek_nilai(nilai):
    if nilai < 0:
        raise NilaiNegatifError("Nilai tidak boleh negatif!")

try:
    cek_nilai(-5)
except NilaiNegatifError as e:
    print(e)

Studi Kasus: Validasi Input User

Misal kamu ingin meminta user memasukkan umur, dan umur harus angka positif.

def input_umur():
    while True:
        try:
            umur = int(input("Masukkan umur: "))
            if umur <= 0:
                raise ValueError("Umur harus lebih dari 0!")
            return umur
        except ValueError as e:
            print(f"Input tidak valid: {e}")

umur = input_umur()
print(f"Umur kamu: {umur}")

Tips dan Best Practice Exception Handling

No Tips Penjelasan
1 Tangani exception spesifik Jangan gunakan except tanpa tipe error jika tidak perlu
2 Berikan pesan error yang jelas Agar user tahu apa yang salah
3 Jangan sembunyikan error penting Hindari except kosong tanpa log
4 Gunakan finally untuk cleanup Misal, menutup file atau koneksi database
5 Jangan overuse exception Gunakan hanya untuk kasus error, bukan untuk flow normal

Penjelasan tambahan:
Exception handling membuat program kamu lebih aman dan mudah digunakan. Tapi, jangan sampai semua error “ditelan” tanpa pesan yang jelas, karena bisa menyulitkan debugging.

Kesimpulan

Exception handling dengan try-except adalah fitur penting di Python untuk menangani error saat program berjalan. Dengan memahami konsep ini, kamu bisa membuat program yang lebih robust, user-friendly, dan profesional. Selalu tangani error secara spesifik, berikan pesan yang jelas, dan gunakan best practice agar program kamu mudah dirawat dan dikembangkan.

Selamat mencoba dan happy coding!

comments powered by Disqus

You May Also Like

Manipulasi File dan I/O di Python

Manipulasi File dan I/O di Python

Manipulasi file dan operasi I/O (Input/Output) adalah salah satu kemampuan penting yang harus dikuasai oleh setiap programmer Python, baik untuk membaca data dari file, menulis hasil ke file, atau memproses data eksternal.