Kursus Pengembangan Python Lanjutan
Bab
>
Tingkat
Penanganan Eksepsi
Pengecualian Berganda
Tujuan
Kumpulkan dan simpan beberapa perbekalan medis dengan benar di dalam peti menggunakan beberapa exception.
Gudang di atap perlu diisi ulang, beberapa perbekalan telah digunakan tetapi tidak pernah diganti. Ada pesanan untuk lebih banyak bahan dalam sebuah memo di salah satu gudang, akan menjadi ide yang baik untuk mengurusnya. Namun demikian, ada berbagai bahan yang perlu dikumpulkan dan disimpan di dalam peti.
Karena tipe data yang berbeda dan jumlah bahan yang dibutuhkan untuk mengisi peti, kita bisa mengalami berbagai kesalahan. Kita dapat menggunakan try / except untuk menangkap kesalahan yang mungkin terjadi dan memperbaiki beberapa masalah, tetapi apa yang terjadi ketika ada beberapa kesalahan yang mungkin terjadi dalam satu operasi? Untuk mengatasi hal ini, kita dapat menentukan exception mana yang ingin ditangkap dan menggunakan beberapa exception.
Untuk memulai, berjalanlah ke tanda X emas dan hadap pintu, gunakan fungsi open() untuk memasuki gudang. Setelah berada di dalam, berjalanlah ke tanda X gelap dan belok ke kanan untuk menggunakan fungsi read() dan periksa bahan serta jumlah yang dipesan dalam memo di atas meja. Informasi tentang konstanta list ditulis dalam memo, termasuk perbekalan dan pesanan untuknya. Setelah selesai, berjalanlah ke tanda X terang di dalam gudang, belok ke arah peti dan ambil konstanta list pads bahan di dalamnya menggunakan fungsi collect(), seperti ini: player.collect(pads) .
Di dalam gudang terdapat persediaan "peroxide" dan "isopropyl", berjalan dan kumpulkan semuanya kemudian pergi ke luar dan menuju ke tanda X gelap di atas karpet ungu. Di karpet ungu, sambil menghadap peti, gunakan fungsi collect() untuk mengambil "water bottle", lanjutkan ke tanda X gelap di atas karpet kuning dan gunakan fungsi collect() untuk mengambil "glass bottle".
Kini setelah perbekalan telah dikumpulkan, saatnya untuk memenuhi pesanan dan menempatkan semua bahan ke dalam peti gudang di sebelah kanan. Untuk melakukan ini, pertama-tama kita akan menyimpan: "water bottle", "peroxide", dan "isopropyl" di dalam sebuah list bernama supplies. Di tanda X gelap di atas karpet red, green dan blue kita akan menggunakan peti untuk menyimpan perbekalan medis. Untuk ini kita akan menyiapkan tiga list: blue_crate = [], green_crate = [] dan red_crate = [].
Sebelum menempatkan semua item, kita harus mengisi semua list dengan bahan, untuk ini kita akan menggunakan loop untuk mengiterasi melalui list dan menggabungkannya menjadi satu list tunggal. Ini akan menempatkan semua supplies ke dalam list dan akan membagi jumlah item pads sesuai dengan order dalam memo di gudang.
for x in range(5): blue_crate.append(supplies[x]) blue_crate.append(pads[x]/order[x])
Meskipun demikian kamu akan melihat bahwa kesalahan akan muncul, meskipun semuanya telah dilakukan dengan benar dan kodenya valid. Namun inilah masalahnya, list supplies hanya memiliki tiga (3) item, tetapi loop berjalan sebanyak lima (5) kali yang menyebabkan Index Error. Sementara untuk list pads tidak hanya memiliki tiga (3) item tetapi juga salah satu nilai order adalah 0, setiap angka yang dibagi dengan 0 menyebabkan Zero Division Error karena tidak ada angka yang dapat dibagi dengan 0 dalam matematika.
Inilah kegunaan dari multiple exceptions, kita menggunakan blok kode try / except untuk menangkap kesalahan dan memungkinkan kita melanjutkan kode. Karena ada dua kesalahan yang terjadi, kita harus mengidentifikasi setiap kesalahan agar dapat menangkap exception spesifik. Hal ini dilakukan dengan memperluas blok kode except dengan cara: except IndexError: dan except ZeroDivisionError:. Sebagai contoh:
for x in range(5): try: blue_crate.append(supplies[x]) blue_crate.append(pads[x]/order[x]) except IndexError: blue_crate.append("glass bottle") except ZeroDivisionError: blue_crate.append(0)
Index Error diperbaiki dengan mengisi kekosongan di list dengan "glass bottle" dan Zero Division Error diatasi dengan menambahkan nilai 0 jika terjadi aksi ilegal.
Lakukan hal ini untuk list blue_crate = [], green_crate = [] dan red_crate = []. Berjalanlah ke tanda X gelap di atas karpet blue, green dan red dan gunakan fungsi place() untuk menempatkan list ke dalam peti yang sesuai agar level selesai.