Cara menggunakan exception error python

Python Exception handling adalah suatu mekanisme penanganan flow normal program karena terjadi exception dengan melanjutkan flow ke code block lainnya.

Cara menggunakan exception error python

Kenapa harus menangani exception? Karena terjadi exception dan kita tidak tangani, maka program akan berhenti.

Object exception mengandung informasi dimana dan kenapa exception terjadi. Jadi kita dapat melakukan tindakan tepat agar program tetap berjalan semestinya.

Contoh program pendek untuk exception handling, nama program pada contoh adalah exceptional.py

def convert(s):
    '''convert to integer'''
    x = int(s)
    return x

Masuk ke REPL, import modul yang baru kita buat diatas. Lalu coba jalankan fungsi convert() dengan mengisi angka berupa string. Fungsi berjalan dengan baik.

Lalu coba juga jalankan fungsi dengan mengisi string character. Akan terjadi error.

ValueError yang adalah type exception yang harus ditangani, dan dan kalimat “invalid literal for int()..’ adalah error messagenya.

>>> from exceptional import convert
>>> convert("12")
12
>>> convert("qqq")
Traceback (most recent call last):
  File "", line 1, in 
  File "D:\learning\python\megacourse\exceptional.py", line 5, in convert
    x = int(s)
ValueError: invalid literal for int() with base 10: 'qqq'

Berikut modifikasi program dengan menambahkan try except block, untuk menangani exception. Perintah print bertujuan agar mudah melihat jalannya program.

Save program tersebut, kembali ke REPL dan import modul tersebut, dan lalukan test yang sama. Kali ini program tidak berhenti, karena kita sudah menangani exception dalam block try except

def convert(s):
    '''convert to integer'''
    try:
        x = int(s)
        print("Konversi berhasil!, x=", x)
    except ValueError:
        print("Konversi gagal!")
        x = -1
    return x
>>> from exceptional import convert
>>> convert("12")
Konversi berhasil!, x= 12
12
>>> convert("qqq")
Konversi gagal!
-1

Menggunakan except ValueError as

Coba bereksperimen dengan passing list pada fungsi konversi, akan terjadi error, perlu ditambahkan exception handling untuk error tersebut.

Caa agar program menampilkan error secara detail, gunakan as clause untuk mendapatkan referensi ke object error tersebut. Syntaxnya adalah except ValueError as e:

as clause mengakses objek error dan mengambil error message yang lebih detail. Untuk mengakses standar error, sys library harus diimport pada program.

Berikut contoh program yang sudah dimodifikasi agar error message lebih informatif.

import sys

def convert(s):
    '''convert to integer'''
    try:
        return int(s)
    except (ValueError, TypeError) as e:
        print("Konversi error : {}".format(str(e)), file=sys.stderr)
        return -1
>>> from exceptional import convert
>>> convert([1, 2, 3])
Konversi error : int() argument must be a string, a bytes-like object or a number, not 'list'
-1

Pada block except contoh program diatas melakukan print dan return -1. Hanya untuk kebutuhan demo program saja agar lebih simple.

Pada program production, lebih baik menggunakan perintah raise.

Python akan melakukan re-raises exception yang sedang dihandle dan menampilkan ke layar. Perintah print dapat diganti menjadi error logging ke system file. Untuk error logging tidak dibahas disini, diperlukan sesi tutorial khusus, karena cukup kompleks.

import sys

def convert(s):
    '''convert to integer'''
    try:
        return int(s)
    except (ValueError, TypeError) as e:
        print("Konversi error : {}".format(str(e)), file=sys.stderr)
        raise

Finally Block

Finally block ini akan dijalankan apapun hasil dari try except block. Sebagai contoh, program sederhana dari screen capture berikut. Program ini akan masuk ke satu direktori, membuat direktori kemudian kembali ke direktori original.

Misalkan karena sesuatu hal, proses membuat direktori gagal (perintah os.mkdir), maka perintah selanjutnya os.chdir(original_path) tidak akan di eksekusi.

Cara menggunakan exception error python

Agar os.chdir (original_path) selalu dijalankan, dapat dibuat seperti berikut dengan menggunakan try-finally block.

Cara menggunakan exception error python

Atau bila ingin menggunakan exception untuk handling error, dapat digunakan try-except-finally block

Cara menggunakan exception error python

Salah tips menggunakan Blok finally biasanya saat hendak cleanup resource, misalnya closing pointer ke file, atau closed connection ke database, etc.

Tips ini tidak mutlak, kembali ke tujuan masing-masing program.

Apa itu Exception pada python?

Assertions Exception adalah sebuah peristiwa, yang terjadi selama pelaksanaan program yang mengganggu aliran normal instruksi program. Secara umum, ketika skrip Python menemukan situasi yang tidak dapat diatasi, hal itu menimbulkan pengecualian. Exception adalah objek Python yang mewakili kesalahan.

Apa itu TypeError?

TypeError: Pengecualian ini muncul ketika sebuah fungsi dilewatkan ke sebuah objek dari tipe yang tidak tepat sebagai sebuah argumen. Detil lengkapnya disediakan melalui pesan error. ValueError: Pengecualian ini terjadi ketika sebuah fungsi argumen memiliki tipe yang benar namun nilai yang salah.

Di dalam statement try apa arti dari except?

except untuk menangani error yang mungkin kita sendiri tidak mengetahuinya. Biasanya try.. except ini digunakan untuk menangani error saat penggunaan IO, operasi database, atau pengaksesan indeks suatu list atau dictionary, dan berbagai kasus lainnya.

Mengapa diperlukan Exception Handling dalam sebuah program?

Exception Handling merupakan mekanisme yang paling diperlukan dalam menangani error yang terjadi pada saat runtime (program berjalan) atau yang lebih dikenal dengan sebutan runtime error. Secara umum, adanya kesalahan / error yang terjadi pada program pada saat runtime dapat menyebabkan program berhenti atau hang.