Menangkap exception
Sebelum Anda mulai menulis exception kustom sendiri, pastikan Anda memahami dasar-dasar penanganan exception.
Pada latihan ini, Anda diberikan fungsi invert_at_index(x, ind) yang menerima dua argumen, sebuah list x dan sebuah indeks ind, lalu membalik (menginvers) elemen list pada indeks tersebut. Misalnya, invert_at_index([5,6,7], 1) mengembalikan 1/6, atau 0.166666.
Cobalah menjalankan kode apa adanya dan periksa output di konsol. Ada dua operasi tidak aman dalam fungsi ini: pertama, jika elemen yang ingin kita invers bernilai 0, maka kode akan menimbulkan exception ZeroDivisionError. Kedua, jika indeks yang diberikan ke fungsi berada di luar jangkauan list, kode akan menimbulkan IndexError. Pada kedua kasus, skrip akan terhenti, yang mungkin tidak diinginkan.
Latihan ini adalah bagian dari kursus
Pemrograman Berorientasi Objek di Python
Petunjuk latihan
Gunakan pola try - except - except (dengan dua blok except) di dalam fungsi untuk menangkap dan menangani dua exception berikut:
tryjalankan kode apa adanya,- jika terjadi
ZeroDivisionError, cetak"Cannot divide by zero!", - jika terjadi
IndexError, cetak"Index out of range!"
Anda tahu solusi Anda benar jika kode berjalan tanpa error, dan output di konsol adalah:
0.16666666666666666
Cannot divide by zero!
None
Index out of range!
None
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# MODIFY the function to catch exceptions
def invert_at_index(x, ind):
return 1/x[ind]
a = [5,6,0,7]
# Works okay
print(invert_at_index(a, 1))
# Potential ZeroDivisionError
print(invert_at_index(a, 2))
# Potential IndexError
print(invert_at_index(a, 5))