Skip to main content

Try, Except & Else

Python menyediakan mekanisme Error Handling untuk menangani exception yang terjadi ketika program sedang berjalan.

Dengan mekanisme ini, program dapat menentukan tindakan yang harus dilakukan ketika terjadi kesalahan sehingga program tidak langsung berhenti secara tiba-tiba.

Struktur dasar yang digunakan adalah:

try
↓
Menjalankan kode yang berpotensi menghasilkan exception
↓
Terjadi exception?
├── Ya → except
└── Tidak → else

Blok try​

Blok try digunakan untuk membungkus kode yang berpotensi menghasilkan exception.

Contohnya:

try:
age = int(input("Berapa umur Anda? "))

Jika pengguna memasukkan nilai yang tidak dapat dikonversi menjadi integer, Python akan menghasilkan ValueError.

Kode yang berpotensi menghasilkan exception sebaiknya ditempatkan di dalam blok try.

Blok except​

Blok except digunakan untuk menangkap dan menangani exception yang terjadi di dalam blok try.

Contoh:

try:
age = int(input("Berapa umur Anda? "))
except ValueError:
print("Harap masukkan angka yang valid.")

Jika pengguna memasukkan:

abc

konversi tersebut akan menghasilkan ValueError.

Exception tersebut kemudian ditangkap oleh:

except ValueError:

dan program menjalankan kode penanganannya.

Menangani Beberapa Jenis Exception​

Sebuah blok try dapat memiliki beberapa blok except.

Contohnya:

try:
age = int(input("Berapa umur Anda? "))
result = 10 / age

except ValueError:
print("Harap masukkan angka yang valid.")

except ZeroDivisionError:
print("Harap masukkan angka yang lebih besar dari 0.")

Pada contoh tersebut terdapat dua kemungkinan exception.

ValueError​

Terjadi ketika input tidak dapat dikonversi menjadi integer.

Contoh input:

abc

ZeroDivisionError​

Terjadi ketika pengguna memasukkan:

0

sehingga program mencoba melakukan pembagian dengan nol.

Dengan menangani kedua exception secara terpisah, program dapat memberikan pesan yang sesuai dengan penyebab masalah.

Blok else​

Blok else dijalankan hanya jika tidak terjadi exception pada blok try.

Contoh:

try:
age = int(input("Berapa umur Anda? "))

except ValueError:
print("Harap masukkan angka yang valid.")

else:
print("Input berhasil diproses.")

Jika input valid, blok else akan dijalankan.

Jika terjadi ValueError, blok else tidak akan dijalankan.

Secara sederhana:

try
↓
Berhasil?
├── Ya → else
└── Tidak → except

Contoh try, except, dan else​

Berikut contoh yang menggabungkan ketiga blok tersebut:

try:
age = int(input("Berapa umur Anda? "))
10 / age

except ValueError:
print("Harap masukkan angka yang valid.")

except ZeroDivisionError:
print("Harap masukkan angka yang lebih besar dari 0.")

else:
print("Terima kasih!")

Alur program:

Input pengguna
↓
try
↓
┌──┴───┐
↓ ↓
Error Berhasil
↓ ↓
except else

Menggunakan while True​

Error handling sering digunakan bersama perulangan ketika program harus terus meminta input sampai pengguna memberikan data yang valid.

Contohnya:

while True:
try:
age = int(input("Berapa umur Anda? "))
10 / age

except ValueError:
print("Harap masukkan angka yang valid.")

except ZeroDivisionError:
print("Harap masukkan angka yang lebih besar dari 0.")

else:
print("Terima kasih!")
break

Pada contoh tersebut, while True membuat program terus melakukan perulangan.

Jika input tidak valid:

Input
↓
Error
↓
except
↓
Kembali meminta input

Jika input valid:

Input
↓
Tidak ada error
↓
else
↓
break
↓
Perulangan berhenti

Pola seperti ini berguna ketika program harus memastikan bahwa pengguna memberikan input yang sesuai sebelum proses dilanjutkan.

Urutan except​

Ketika sebuah exception terjadi, Python akan mencari blok except yang sesuai.

Jika terdapat beberapa blok except, Python akan menjalankan blok except pertama yang cocok dengan jenis exception yang terjadi.

Setelah exception berhasil ditangani, Python tidak menjalankan blok except berikutnya untuk exception yang sama.

Contohnya:

try:
age = int(input("Umur: "))

except ValueError:
print("Input tidak valid.")

except ZeroDivisionError:
print("Tidak boleh nol.")

Jika terjadi ValueError, hanya bagian berikut yang dijalankan:

except ValueError:
print("Input tidak valid.")

Python tidak kemudian menjalankan:

except ZeroDivisionError:

Mengapa Menangani Exception Secara Spesifik?​

Sebaiknya exception ditangani berdasarkan jenis kesalahannya.

Misalnya:

except ValueError:
print("Input harus berupa angka.")

lebih informatif daripada menangkap semua kemungkinan exception tanpa mengetahui jenis masalahnya.

Penanganan yang spesifik memungkinkan program memberikan respons yang lebih sesuai dengan kondisi yang terjadi.

Pola Dasar Error Handling​

Struktur umum yang perlu diingat:

try:
# Kode yang berpotensi menghasilkan exception

except SomeException:
# Penanganan ketika exception terjadi

else:
# Dijalankan jika tidak ada exception

Ketiga blok tersebut memiliki fungsi yang berbeda:

BlokFungsi
tryMenjalankan kode yang berpotensi menghasilkan exception
exceptMenangani exception yang terjadi
elseDijalankan jika tidak terjadi exception

Kesimpulan​

try, except, dan else merupakan bagian penting dari mekanisme Error Handling Python.

Alur dasarnya adalah:

try
↓
Kode dijalankan
↓
┌─────────────────┐
│ Terjadi error? │
└─────────────────┘
↓
┌──┴───┐
↓ ↓
Ya Tidak
↓ ↓
except else

try digunakan untuk menjalankan kode yang berpotensi menghasilkan exception, except digunakan untuk menangani exception tertentu, sedangkan else digunakan untuk menjalankan kode ketika proses pada try berhasil tanpa exception.

Kombinasi while True dengan try, except, dan else juga dapat digunakan untuk membuat program yang terus meminta input hingga mendapatkan data yang valid.

Pada materi berikutnya, konsep ini dapat dilanjutkan dengan blok finally dan penggunaan raise untuk menangani exception secara lebih lanjut.