Umumnya exception memiliki simple payload dengan diagnostic yang menjelaskan penyebab exception. Umumnya, constructor dari Builtin Exception menerima single string.
Coba jalankan code dibawah,
def median(iterable):
items = sorted(iterable)
if len(items) == 0:
raise ValueError("median() arg is empty series")
median_idx = (len(items) -1) // 2
if len(items) % 2 != 0:
return items[median_idx]
return (items[median_idx] + items[median_idx +1]) / 2
>>> from median import *
>>> median([])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "F:\Project\pyErrHandling\median.py", line 4, in median
raise ValueError("median() arg is empty series")
ValueError: median() arg is empty series
Saat kita kirim data kosong ke fungsi median, maka string error yang didefinisikan dalam raise ValueError akan tampil.
Python juga dapat mengambil error message dengan mengakses arg exceptiin atribut. Contoh program diatas dimodifikasi seperti berikut.
def median(iterable):
items = sorted(iterable)
if len(items) == 0:
raise ValueError("median() arg is empty series")
median_idx = (len(items) -1) // 2
if len(items) % 2 != 0:
return items[median_idx]
return (items[median_idx] + items[median_idx +1]) / 2
def main():
try:
median([])
except ValueError as e:
print ("Payload", e.args)
print ("Payload", repr(e))
print ("Payload", str(e))
>>> from median import *
>>> main()
Payload ('median() arg is empty series',)
Payload ValueError('median() arg is empty series')
Payload median() arg is empty series
>>>
Dengan mengakses atribut args dari exception, error message dapat kita akses. Alternatif lain untuk menampilkan error message adalah dengan fungsi repr() atau str().
Fungsi repr menampilkan Object Exception, sementara str hanya menampilkan string error-nya saja.