Exception Handling jika diartikan secara bebas dapat disebut sebagai ‘teknik penanganan kasus khusus’. Exception handling pada kode program diperlukan saat kita perlu menyiasati adanya perintah yang gagal dieksekusi karena adanya kondisi yang tidak sesuai dengan kondisi yang diharapkan pada kasus normal.
Contoh sederhana kondisi tidak normal misalkan saat program mengharapkan input dari user berupa angka namun user/sistem memberikan nilai ataupun format yang tidak valid. Jika kasus khusus tersebut tidak diberikan penanganan khusus maka program dapat terhenti karena error.
Contoh kasus
Jalankan contoh kode di bawah, kemudian coba berikan nilai seharusnya (angka) dan bandingkan hasilnya dengan memberikan nilai yang tidak sesuai (misal: huruf).
Jika pada contoh di atas user memberikan nilai non angka saat diminta, maka program akan mengalami fatal error dan keluar sebelum baris kode berikutnya dijalankan .
Menambahkan exception handling
Untuk menangani kasus pada contoh di atas kita dapat memodifikasi kode dan menambahkan exception handling untuk mendeteksi terjadinya kesalahan. Dengan menambahkan exception handling, jikapun terjadi kesalahan program dapat tetap melanjutkan ke baris berikutnya.
Syntax exeption handling
try: # blok kode ini dieksekusi terlebih dahulu except: # eksekusi pindah ke blok except bila pada blok try terjadi error # eksekusi pindah tanpa melanjutkan sisa kode pada blok trySolusi untuk kasus sebelumnya
Jalankan contoh berikut untuk lebih jelasnya, berikan nilai yang yang sama seperti saat anda menghasilkan error pada contoh kode sebelumnya dan perhatikan hasilnya.
Contoh lain
Exception handling saat konversi datetime
Kode di bawah adalah contoh solusi saat user memasukkan tanggal dengan format yang salah.
from datetime import datetime as dtm tanggal_valid = False while not tanggal_valid: dt_input = input('Masukkan tanggal lahir anda dengan format seperti contoh berikut: 31-12-1995\n') try: tanggal_lahir = dtm.strptime(dt_input,'%d %m %Y') tanggal_valid = True except: print('Anda memasukkan nilai dengan format yang salah') print(tanggal_lahir)Semoga bermanfaat,
Salam
Penanganan file adalah bagian penting dari aplikasi web apapun.
Python memiliki beberapa fungsi untuk membuat, membaca, memperbarui, dan menghapus file.
File Handling (Penanganan File)
Fungsi key untuk bekerja dengan file dengan Python adalah fungsi open().
Fungsi open() mengambil dua parameter; nama file, dan mode.
Ada empat metode (mode) berbeda untuk membuka file, yaitu seperti berikut:
“r” – Read- Nilai default. Membuka file untuk membaca, error jika file tidak ada
“a” – Append- Membuka file untuk ditambahkan, membuat file jika tidak ada
“w” – write- Membuka file untuk ditulis, membuat file jika tidak ada
“x” – create- Membuat file yang ditentukan, mengembalikan kesalahan jika file tersebut ada
Selain itu, Anda dapat menentukan apakah file harus ditangani sebagai mode biner atau teks
“t” – Text – Nilai default. Mode teks
“b” – Biner – Mode biner (mis. gambar)
Sintaks
Untuk membuka file yang dapat dibaca cukup dengan menentukan nama file.
Kode diatas sama dengan:
f = open("demofile.txt", "rt")
Karena “r” untuk dibaca, dan “t” untuk teks adalah nilai default, kita tidak perlu menentukannya lagi.
Catatan: Pastikan file tersebut ada, atau jika tidak akan menghasilkan error.
Blok trymemungkinkan untuk menguji blok kode terhadap kesalahan.
Blok except memungkinkan untuk menangani kesalahan.
Blok finally memungkinkan untuk mengeksekusi kode, terlepas dari hasil blok try- dan except.
Exception Handling
Ketika kesalahan terjadi, atau exception seperti yang biasa disebut, Python biasanya akan berhenti dan menghasilkan pesan kesalahan.
Exception ini dapat ditangani menggunakan pernyataan try.
Contoh:
Blok try akan menghasilkan exception, karena x tidak ditentukan
#Blok try akan menghasilkan error, karena x tidak ditentukan try: print(x) except: print("An exception occurred")
Karena blok try menghasilkan kesalahan, blok except akan dieksekusi.
Tanpa blok try, program akan crash dan menimbulkan kesalahan.
Contoh:
Pernyataan
ini akan menimbulkan kesalahan, karena x tidak ditentukan
Pernyataan ini akan menimbulkan kesalahan, karena x tidak ditentukan print(x)
Banyak Exception
Anda dapat menentukan blok exception sebanyak yang diinginkan, misalnya jika ingin menjalankan blok kode khusus untuk jenis kesalahan khusus.
Contoh:
Cetak satu pesan jika blok percobaan memunculkan NameError dan lainnya untuk kesalahan lainnya
# Blok try akan menghasilkan NameError, karena x tidak ditentukan: try: print(x) except NameError: print("Variable x tidak ditentukan") except: print("Telah terjadi kesalahan")
Else
Anda dapat menggunakan kata kunci else untuk menentukan blok kode yang akan dieksekusi jika tidak ada kesalahan yang muncul.
Contoh:
Dalam contoh ini, blok try tidak menghasilkan kesalahan apa pun
#Blok percobaan tidak menimbulkan kesalahan, jadi blok else dijalankan: try: print("Hello") except: print("Terjadi kesalahan") else: print("Tidak terjadi kesalahan")
Finally
Blok finally, jika ditentukan, akan dieksekusi terlepas dari apakah blok try menimbulkan kesalahan atau tidak.
Contoh:
# Blok finally dieksekusi tidak peduli apakah blok try menimbulkan kesalahan atau tidak try: print(x) except: print("Terjadi Kesalahan") finally: print("'try except' diselesaikan")
Finally dapat berguna untuk menutup objek dan membersihkan sumber daya.
Contoh:
Cobalah untuk membuka dan menulis pada file yang tidak dapat ditulis
# Blok try akan memunculkan kesalahan saat mencoba menulis ke file read-only: try: f = open("demofile.txt") f.write("Lorum Ipsum") except: print("Terjadi kesalahan saar menulis pada file ini") finally: f.close() # Program dapat melanjutkan, tanpa meninggalkan objek file terbuka
Program dapat melanjutkan, tanpa meninggalkan objek file terbuka.
Menampilkan Exception
Sebagai pengembang Python, kita dapat memilih untuk memberikan pengecualian jika suatu kondisi terjadi.
Untuk membuang (atau menampilkan) pengecualian, gunakan kata kunci raise.
Contoh:
Menampilkan kesalahan dan hentikan program jika x lebih rendah dari 0
x = -1 if x < 0: raise Exception("Maaf tidak ada angka dibawah 0")
Kata kunci raise digunakan untuk menampilkan pengecualian.
Kita dapat menentukan jenis kesalahan yang akan muncul, dan teks yang akan dicetak kepada pengguna.
Contoh:
Tampilkan TypeError jika x bukan
bilangan bulat
x = "hello" if not type(x) is int: raise TypeError("Hanya integer yang diizinkan")