Lompat ke konten Lompat ke sidebar Lompat ke footer

Exception dan Penanganan Kesalahan dalam Python

Ketika menjalankan program Python, terkadang muncul kesalahan yang menyebabkan program berhenti. Kesalahan tersebut dapat terjadi karena penulisan kode yang tidak tepat, penggunaan data yang tidak sesuai, atau kondisi tertentu yang baru diketahui ketika program sedang berjalan.

Sebelum mempelajari materi tentang Exception dan Penanganan Kesalahan dalam Python, terlebih dahulu pelajari materi tentang: Berkas CSV dalam Python, Membaca Berkas CSV dalam Python, dan Menulis Berkas CSV dalam Python.

Python menyediakan mekanisme yang disebut exception untuk menangani kondisi tersebut. Dengan penanganan exception yang tepat, program dapat memberikan pesan yang lebih jelas dan tetap menjalankan bagian program lainnya tanpa berhenti secara tiba-tiba. Memahami exception merupakan bagian penting dalam pembelajaran Python karena hampir setiap program dapat menghadapi kondisi yang tidak terduga.

Pengertian Exception

Exception adalah kejadian yang muncul ketika terjadi kondisi tidak normal selama program sedang dijalankan.

Contohnya, program mencoba membagi angka dengan nol:
hasil = 10 / 0

Kode tersebut akan menghasilkan kesalahan karena pembagian dengan nol tidak dapat dilakukan. Contoh lainnya adalah ketika program mencoba mengubah teks menjadi bilangan:
angka = int("abc")

Nilai `"abc"` tidak dapat diubah menjadi bilangan bulat sehingga Python menghasilkan exception.

Perbedaan Syntax Error dan Exception

Kesalahan dalam Python dapat muncul dalam beberapa bentuk. Dua hal yang penting dibedakan adalah syntax error dan exception.

Syntax Error

Syntax error terjadi ketika aturan penulisan kode Python tidak dipenuhi.

Contoh:
if angka > 10
print(angka)


Kode tersebut tidak memiliki tanda titik dua setelah kondisi `if`. Python akan memberikan pesan kesalahan sebelum program dapat dijalankan dengan benar.

Exception

Exception biasanya muncul ketika sintaks program sudah benar, tetapi terjadi kondisi bermasalah ketika program berjalan.

Contoh:
angka = 10
hasil = angka / 0


Penulisan program dapat dikenali oleh Python, tetapi operasi pembagian tersebut tidak dapat dilakukan.

Alasan Penggunaan Exception

Tanpa penanganan exception, program dapat berhenti ketika kesalahan terjadi. Penanganan exception berguna untuk:
  • Memberikan pesan kesalahan yang mudah dipahami
  • Mencegah program berhenti secara tiba-tiba
  • Memberikan kesempatan kepada pengguna untuk memperbaiki input
  • Menjalankan bagian program lainnya
  • Membuat program lebih kuat terhadap kondisi tidak terduga
  • Mempermudah proses pencarian kesalahan

Sebagai contoh, program yang meminta angka dari pengguna perlu mengantisipasi kemungkinan pengguna memasukkan teks.

Bentuk Dasar try dan except

Python menggunakan `try` dan `except` untuk menangani exception. Bentuk sederhananya:
try:
# kode yang mungkin menghasilkan exception
except:
# kode yang dijalankan jika exception terjadi


Contoh:
try:
angka = int(input("Masukkan angka: "))
print(angka)
except:
print("Input harus berupa angka")


Jika pengguna memasukkan:
25

program dapat menjalankan perintah seperti biasa.

Jika pengguna memasukkan:
abc

program akan menjalankan bagian `except`.

Menangani Exception Tertentu

Sebaiknya exception yang ditangani ditentukan secara spesifik.

Contoh:
try:
angka = int(input("Masukkan angka: "))
except ValueError:
print("Input harus berupa angka")


`ValueError` digunakan ketika nilai yang diberikan tidak sesuai dengan bentuk data yang dibutuhkan. Pendekatan ini lebih baik daripada menggunakan `except` tanpa menyebutkan jenis exception karena penyebab kesalahan dapat diketahui dengan lebih jelas.

ValueError

`ValueError` terjadi ketika suatu fungsi menerima nilai dengan jenis yang benar tetapi isi nilainya tidak sesuai.

Contoh:
angka = int("halo")

Program dapat menangani kondisi tersebut:
try:
angka = int(input("Masukkan angka: "))
except ValueError:
print("Nilai yang dimasukkan bukan angka")


Exception ini sering muncul ketika data dari `input()` akan diubah menjadi angka.

ZeroDivisionError

`ZeroDivisionError` muncul ketika program mencoba membagi bilangan dengan nol.

Contoh:
try:
hasil = 10 / 0
except ZeroDivisionError:
print("Tidak dapat membagi dengan nol")


Dengan penanganan tersebut, program dapat memberikan pesan yang lebih jelas.

TypeError

`TypeError` terjadi ketika suatu operasi dilakukan terhadap jenis data yang tidak sesuai.

Contoh:
angka = 10
teks = "5"
hasil = angka + teks


Program tersebut tidak dapat menjumlahkan bilangan dengan teks menggunakan operator `+`.

Penanganannya:
try:
hasil = angka + teks
except TypeError:
print("Jenis data tidak sesuai")


IndexError

`IndexError` terjadi ketika program mencoba mengakses indeks yang tidak tersedia.

Contoh:
data = [10, 20, 30]
print(data[5])


Daftar tersebut hanya memiliki indeks `0`, `1`, dan `2`. Program dapat menangani kondisi tersebut:
try:
print(data[5])
except IndexError:
print("Indeks tidak tersedia")


KeyError

`KeyError` dapat terjadi ketika program mengakses kunci kamus yang tidak tersedia.

Contoh:
siswa = {
"Nama": "Andi",
"Kelas": "10A"
}
print(siswa["Umur"])


Kunci `"Umur"` tidak terdapat dalam kamus.

Penanganannya:
try:
print(siswa["Umur"])
except KeyError:
print("Kunci tidak ditemukan")


FileNotFoundError

Exception ini muncul ketika program mencoba membuka berkas yang tidak tersedia.

Contoh:
with open("data.txt", "r") as file:
data = file.read()


Jika `data.txt` tidak ada, Python dapat menghasilkan `FileNotFoundError`.

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


Menggunakan Beberapa except

Satu blok `try` dapat memiliki beberapa `except`.

Contoh:
try:
angka = int(input("Masukkan angka: "))
hasil = 100 / angka
print(hasil)
except ValueError:
print("Input harus berupa angka")
except ZeroDivisionError:
print("Angka tidak boleh nol")


Dengan cara tersebut, program dapat memberikan pesan berbeda sesuai jenis kesalahan.

Urutan except

Ketika terdapat beberapa `except`, Python akan mencari penanganan yang sesuai dengan exception yang terjadi.

Contoh:
try:
angka = int(input("Masukkan angka: "))
hasil = 100 / angka
except ValueError:
print("Input bukan angka")
except ZeroDivisionError:
print("Input tidak boleh nol")


Jika pengguna memasukkan `abc`, bagian `ValueError` dijalankan. Jika pengguna memasukkan `0`, bagian `ZeroDivisionError` dijalankan.

Menggunakan else

Selain `try` dan `except`, Python menyediakan `else`. Bagian `else` dijalankan jika tidak terjadi exception.

Bentuk umum:
try:
# kode yang diuji
except:
# dijalankan jika terjadi exception
else:
# dijalankan jika tidak terjadi exception


Contoh:
try:
angka = int(input("Masukkan angka: "))
except ValueError:
print("Input tidak valid")
else:
print("Angka yang dimasukkan:", angka)


Jika input valid, bagian `else` dijalankan.

Menggunakan finally

`finally` digunakan untuk menjalankan kode tertentu setelah proses `try` dan `except`, baik terjadi exception maupun tidak.

Bentuk umum:
try:
# kode
except:
# penanganan kesalahan
finally:
# selalu dijalankan


Contoh:
try:
angka = int(input("Masukkan angka: "))
except ValueError:
print("Input tidak valid")
finally:
print("Program selesai")


Pesan `"Program selesai"` akan tetap ditampilkan.

Contoh try, except, else, dan finally

Keempat bagian dapat digunakan bersama.
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("Proses selesai")


Alurnya:
  • `try` menjalankan kode utama.
  • `except` menangani exception.
  • `else` dijalankan jika tidak terjadi exception.
  • `finally` dijalankan setelah proses selesai.

Menangkap Pesan Exception

Exception dapat disimpan dalam sebuah variabel menggunakan `as`.

Contoh:
try:
angka = int("abc")
except ValueError as error:
print("Terjadi kesalahan:", error)


Variabel `error` berisi informasi mengenai exception yang terjadi. Cara ini berguna ketika informasi kesalahan perlu ditampilkan atau diperiksa.

Menggunakan Exception Secara Umum

Python juga memungkinkan penggunaan `Exception` sebagai kelas dasar untuk menangani berbagai exception.

Contoh:
try:
angka = int(input("Masukkan angka: "))
except Exception as error:
print("Terjadi kesalahan:", error)


Pendekatan tersebut dapat menangkap berbagai exception. Namun, untuk program yang jelas dan mudah dirawat, penanganan exception yang spesifik biasanya lebih baik jika jenis kesalahan sudah diketahui.

Menaikkan Exception dengan raise

Python menyediakan kata kunci `raise` untuk menghasilkan exception secara sengaja.

Contoh:
umur = -5
if umur < 0:
raise ValueError("Umur tidak boleh negatif")


Program tersebut menghasilkan `ValueError` ketika nilai umur kurang dari nol. `raise` berguna ketika program memiliki aturan tertentu yang harus dipenuhi.

Contoh Penggunaan raise

Misalnya sebuah program hanya menerima nilai antara 0 sampai 100.
nilai = 120
if nilai < 0 or nilai > 100:
raise ValueError("Nilai harus berada antara 0 dan 100")


Jika nilai berada di luar batas, program menghasilkan exception.

Membuat Exception Sendiri

Python memungkinkan pembuatan jenis exception sendiri menggunakan kelas.

Contoh:
class NilaiTidakValidError(Exception):
pass


Exception tersebut dapat digunakan:
nilai = 120
if nilai > 100:
raise NilaiTidakValidError("Nilai tidak boleh lebih dari 100")


Cara ini berguna pada program yang memiliki aturan khusus.

Menangani Exception Buatan Sendiri

Exception buatan sendiri dapat ditangani menggunakan `except`.
class NilaiTidakValidError(Exception):
pass
try:
nilai = 120
if nilai > 100:
raise NilaiTidakValidError("Nilai terlalu tinggi")
except NilaiTidakValidError as error:
print(error)


Program dapat memberikan pesan khusus sesuai kebutuhan.

Exception dalam Fungsi

Exception juga dapat terjadi di dalam fungsi.

Contoh:
def bagi(a, b):
return a / b
try:
hasil = bagi(10, 0)
print(hasil)
except ZeroDivisionError:
print("Tidak dapat membagi dengan nol")


Penanganan exception dapat dilakukan ketika fungsi tersebut dipanggil.

Exception dalam Perulangan

Penanganan exception sangat berguna dalam program yang menggunakan perulangan. Misalnya program meminta beberapa input angka:
for i in range(3):
try:
angka = int(input("Masukkan angka: "))
print("Angka:", angka)
except ValueError:
print("Input harus berupa angka")


Jika salah satu input tidak valid, program tetap dapat melanjutkan perulangan.

Contoh Program Pembagian

Berikut contoh program sederhana untuk melakukan pembagian:
try:
angka1 = float(input("Masukkan angka pertama: "))
angka2 = float(input("Masukkan angka kedua: "))
hasil = angka1 / angka2
except ValueError:
print("Input harus berupa angka")
except ZeroDivisionError:
print("Angka kedua tidak boleh nol")
else:
print("Hasil:", hasil)
finally:
print("Program selesai")


Program tersebut menangani dua kemungkinan kesalahan:
  • Input bukan angka
  • Pembagian dengan nol

Exception Saat Membaca Berkas

Penanganan exception juga penting ketika bekerja dengan berkas.
try:
with open("data.txt", "r", encoding="utf-8") as file:
isi = file.read()
except FileNotFoundError:
print("Berkas tidak ditemukan")
else:
print(isi)


Jika berkas tersedia, isinya ditampilkan. Jika berkas tidak tersedia, program memberikan pesan yang sesuai.

Exception Saat Membaca CSV

Pada pengolahan CSV, exception juga dapat digunakan.
import csv
try:
with open("data.csv", "r", encoding="utf-8") as file:
data = csv.DictReader(file)
for baris in data:
print(baris)
except FileNotFoundError:
print("Berkas CSV tidak ditemukan")


Cara ini membuat program lebih aman ketika berkas belum tersedia.

Beberapa Jenis Exception yang Sering Digunakan


ExceptionKondisi
  • ValueError
  • Nilai tidak sesuai dengan kebutuhan
  • TypeError
  • Jenis data tidak sesuai
  • ZeroDivisionError
  • Pembagian dengan nol
  • IndexError
  • Indeks tidak tersedia
  • KeyError
  • Kunci kamus tidak tersedia
  • FileNotFoundError
  • Berkas tidak ditemukan
  • NameError
  • Nama atau variabel tidak ditemukan
  • AttributeError
  • Atribut atau metode tidak tersedia
  • ImportError
  • Terjadi masalah ketika melakukan impor
  • ModuleNotFoundError
  • Modul yang diminta tidak ditemukan

Perbedaan Error dan Exception

Istilah error dan exception sering digunakan secara bersamaan, tetapi dalam pembelajaran Python perlu memahami bahwa exception merupakan kondisi yang dapat ditangani menggunakan mekanisme `try` dan `except`.

Contohnya:
try:
angka = int("abc")
except ValueError:
print("Terjadi kesalahan nilai")


Program mendeteksi `ValueError` dan menjalankan penanganan yang sudah disediakan.

Praktik yang Baik dalam Penanganan Exception

Beberapa kebiasaan dapat membuat program lebih mudah dipahami.

Gunakan Exception yang Spesifik

Lebih baik:
except ValueError:

daripada:
except:

jika jenis kesalahan sudah diketahui.

Berikan Pesan yang Jelas

Berikut diberikan contoh pesan yang lebih jelas.

Contoh:
except ValueError:
print("Masukkan angka yang valid")


Pesan tersebut lebih membantu daripada pesan yang tidak menjelaskan penyebab masalah.

Jangan Menggunakan Exception untuk Semua Hal

Exception sebaiknya digunakan untuk menangani kondisi yang memang berpotensi menghasilkan kesalahan. Program tetap perlu menggunakan pemeriksaan kondisi biasa ketika kondisi tersebut dapat diketahui sebelum operasi dilakukan.

Gunakan finally untuk Proses yang Harus Selalu Dilakukan

Berikut diberikan contoh penggunaan finally untuk proses yang harus selalu dilakukan.

Contohnya:
finally:
print("Proses selesai")


Bagian ini cocok untuk pekerjaan yang harus dilakukan setelah proses utama.

Alur Penanganan Exception

Secara sederhana, alurnya dapat digambarkan sebagai berikut:
Program menjalankan try
↓
Apakah terjadi exception?
  /       \
Tidak     Ya
  ↓        ↓
else    except
   \     /
   ↓    ↓
  finally
     ↓
Program lanjut


Jika tidak terjadi exception, bagian `else` dapat dijalankan. Jika terjadi exception, Python mencari `except` yang sesuai. Setelah itu, bagian `finally` dapat dijalankan.

Latihan

Berikut beberapa latihan yang dapat digunakan untuk memperkuat pemahaman.

Latihan 1

Buat program yang meminta sebuah bilangan bulat. Tangani kemungkinan pengguna memasukkan teks.

Latihan 2

Buat program pembagian dua bilangan dan tangani `ZeroDivisionError`.

Latihan 3

Buat program yang mengakses indeks sebuah list dan tangani `IndexError`.

Latihan 4

Buat program yang mengambil data dari kamus dan tangani `KeyError`.

Latihan 5

Buat program yang membaca sebuah berkas dan tangani `FileNotFoundError`.

Latihan 6

Gunakan `try`, `except`, dan `else` dalam sebuah program sederhana.

Latihan 7

Gunakan `finally` untuk menampilkan pesan bahwa program telah selesai.

Latihan 8

Buat program yang menggunakan `raise` ketika nilai berada di luar rentang 0 sampai 100.

Latihan 9

Buat exception sendiri untuk menangani kondisi tertentu.

Latihan 10

Buat program pengolahan nilai siswa yang dapat menangani input yang bukan angka.

Kesimpulan

Exception merupakan bagian penting dalam Python karena program tidak selalu menerima kondisi yang sesuai dengan harapan. Kesalahan dapat muncul ketika pengguna memberikan input yang salah, berkas tidak tersedia, operasi matematika tidak memungkinkan, atau data yang digunakan tidak sesuai.

Python menyediakan `try`, `except`, `else`, dan `finally` untuk membantu menangani kondisi tersebut. `try` digunakan untuk menjalankan kode yang berpotensi menghasilkan exception, sedangkan `except` digunakan untuk menangani exception tertentu.

Bagian `else` dapat digunakan untuk menjalankan kode ketika tidak terjadi exception. Sementara itu, `finally` digunakan untuk menjalankan kode setelah proses selesai, baik terjadi exception maupun tidak.

Beberapa exception yang sering ditemui antara lain `ValueError`, `TypeError`, `ZeroDivisionError`, `IndexError`, `KeyError`, dan `FileNotFoundError`.

Selain menangani exception, Python juga memungkinkan program menghasilkan exception sendiri menggunakan `raise`. Dengan pemahaman tersebut, program dapat dibuat lebih terstruktur, aman, dan mampu menghadapi kondisi yang tidak terduga.

Artikel ini akan dibaca oleh: Diptya Pungkaswara Maranello, Diyah Ayyu Azkiya Damayanti, Emiliana Catherine Corneliesta, Enggar Maulia, dan Erika Aisyah Putri.

5 komentar untuk "Exception dan Penanganan Kesalahan dalam Python"

  1. Apa yang dimaksud dengan tipe data pada C++?

    BalasHapus
    Balasan
    1. Tipe data C++ merupakan suatu bentuk tipe data yang dapat disimpan oleh variabel tertentu. Contoh, variabel boolean yang dapat memiliki data dengan tipe dua karakter, dan variabel integer yang dapat menampung data tipe bilangan bulat pada C++.

      Hapus
    2. Ketika membuat kode program, maka perlu digunakan variabel yang berbeda-beda untuk menyimpan suatu informasi yang berbeda pula. Variabel hanyalah lokasi penyimpanan yang disediakan untuk menyimpan data dalam ketentuan tertent atau menggunakan suatu tipe data tertentu pada C++.

      Hapus
    3. Tipe data C++ merupakan bentuk deklarasi untuk variabel tertentu yang digunakan untuk menentukan jenis dan ukuran data yang berkaitan dengan nama variabel yang digunakan.

      Hapus
    4. Tipe data C++ digunakan untuk menentukan suatu tipe data yang dapat disimpan oleh variabel seperti tipe data integer, float, char, dan lain sebagainya.

      Hapus

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 -