Cara menggunakan raise python

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

Cara menggunakan raise 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 raise python

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

Cara menggunakan raise python

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

Cara menggunakan raise python

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

❮ Python Keywords


Example

Raise an error and stop the program if x is lower than 0:

x = -1

if x < 0:
  raise Exception("Sorry, no numbers below zero")

Try it Yourself »


Definition and Usage

The raise keyword is used to raise an exception.

You can define what kind of error to raise, and the text to print to the user.


More Examples

Example

Raise a TypeError if x is not an integer:

x = "hello"

if not type(x) is int:
  raise TypeError("Only integers are allowed")

Try it Yourself »


❮ Python Keywords


Apa yang dimaksud dengan exception pada python?

Exception adalah objek Python yang mewakili kesalahan.

Pembagian dengan nol adalah contoh jenis kesalahan apa pada python?

6. Arithmetic Error Sebagai contoh, ketika kamu meminta komputer untuk melakukan pembagian dengan angka 0 (nol).

Apa penyebab terjadinya suatu pengecualian exceptions di suatu program?

Exception dipicu oleh runtime error, yaitu error atau kesalahan yang terjadi saat program dieksekusi oleh interpreter.