Kursus Pengembangan Python Lanjutan
Bab
>
Tingkat
Penanganan Pengecualian
Menyesuaikan Kelas Pengecualian
Tujuan
Verifikasi air hujan yang terkumpul dan pastikan air tersebut diproses dan ditransfer dengan benar dengan menyesuaikan kelas exception.
Di ujung kompleks atap terdapat sebuah cistern yang menampung air hujan yang terkumpul, air ini disaring dan dipindahkan ke seluruh bangunan untuk berbagai keperluan. Beberapa katup pada dinding atas mengontrol tekanan air yang mengalir, sementara itu ruang penyimpanan terakhir menampung berbagai pemanas air. Mengoperasikan mesin bisa jadi rumit, namun operasinya dapat disederhanakan secara efektif dengan menjabarkan kode error dan menyiapkan tindakan penanggulangan yang efektif. Hal ini dicapai dengan menyesuaikan kelas exception yang Anda buat untuk exception kustom Anda.
Ada dua kelas exception kustom yang telah disiapkan di editor kode, kemampuan Anda untuk menggunakannya akan sangat penting untuk memecahkan masalah mesin yang Anda temui. Yang pertama adalah exception untuk menangani masalah tekanan air. Exception ini dirancang untuk digunakan dengan katup-katup guna memastikan air mengalir dengan benar ke dalam kompleks atau jika tekanan perlu disesuaikan. Tergantung apakah tekanannya di bawah 100 atau di atas 300 tindakan berbeda diambil oleh exception, tekanan adalah argumen yang harus disediakan oleh pengguna. Setelah dipicu, sebuah pop-up kustom yang memuat kode error dan pesan akan ditampilkan.
class PressureError(Exception):
def __init__(self, pressure, message="Water pressure is offset, pressure is: ", error_code=404):
self.pressure = pressure
self.message = message
self.error_code = error_code
super().__init__(self.message)
async def eval(self):
await player.display("[Error: %s {%s %s}]" % (self.error_code , self.message, self.pressure))
if self.pressure < 100:
return ("Valve has been closed")
if self.pressure > 360:
return ("Valve has been opened")
Kelas exception kustom kedua ditujukan untuk mengatur suhu pada pemanas air. Jika suhunya terlalu rendah atau terlalu tinggi, Anda harus memasukkan suhu baru sebagai argumen untuk mengoreksi kesalahan begitu terjadi.
class TemperatureError(Exception):
def __init__(self, temp, message="Temperature is not appropiate, enter new temperature: ", error_code=808):
self.temp = temp
self.message = message
self.error_code = error_code
super().__init__(self.message)
async def eval(self):
await player.display("[Error: %s {%s %s}]" % (self.error_code , self.message, self.temp))
return ("Temperature Corrected")
Untuk memulai, berjalanlah ke tanda X berwarna terang di atas karpet hijau dan hadaplah ke tangki yang memiliki katup, terdapat empat (4) tangki yang mengatur tekanan air yang dipompa dari cistern. Terdapat empat (4) konstanta variabel: green_pressure, red_pressure, blue_pressure dan orange_pressure, yang menyimpan tekanan masing-masing tangki pada karpet dengan warna yang sesuai.
Pada semua tanda X berwarna terang, gunakan urutan blok kode try/except dan else untuk memverifikasi apakah tekanan pada setiap tangki sesuai. Jika tekanannya di bawah 100 atau jika lebih dari 300, naikkan exception PressureError kustom dan tambahkan tekanan sebagai argumen. Jika diaktifkan, maka akan memunculkan kode error dan mengeluarkan koreksi, jika tidak, klausa else akan dipicu yang mengonfirmasi bahwa tekanan dalam tangki sesuai. Sebagai contoh:
try: if green_pressure < 100 or green_pressure > 360: raise PressureError(green_pressure) except PressureError as x: error = await x.eval() player.speak(error) else: player.speak( "Pressure is appropriate" )
Lakukan ini pada semua tanda X berwarna terang, menggunakan konstanta variabel yang sesuai dengan masing-masing karpet berwarna dan verifikasi atau sesuaikan katup tekanan sesuai kebutuhan.
Setelah selesai, berjalanlah ke tanda X berwarna emas dan gunakan fungsi open() untuk mengakses ruang penyimpanan dengan pemanas air, setelah masuk, berjalanlah ke tanda X berwarna emas yang berada di dalam ruang penyimpanan dan gunakan fungsi read() untuk membaca memo di konter. Memo ini akan memberikan informasi mengenai suhu ideal untuk masing-masing pemanas air.
Setelah Anda mendapatkan informasi tentang masing-masing suhu, berjalanlah ke tanda X gelap di atas karpet ungu, di sini kita akan menggunakan urutan kode try/except dan else untuk memverifikasi bahwa pemanas air memiliki suhu yang tepat. Terdapat empat (4) konstanta variabel lagi yang terkait dengan karpet berwarna: purple_temperature, yellow_temperature, pink_temperature dan white_temperature.
Dalam urutan tersebut, kita akan memeriksa apakah suhu di bawah 100; jika ya, maka kita akan menaikkan exception TemperatureError. Sebagai exception kustom, ia mengambil sebuah argumen; dalam hal ini Anda harus memasukkan suhu yang dibaca dari memo agar countermeasure exception dapat dijalankan dengan tepat untuk mengoreksi masalah tersebut. Sebagai contoh:
try: if purple_temperature < 100: raise TemperatureError(120) except TemperatureError as x: error = await x.eval() player.speak(error) else: player.speak( "Temperature is ok" )
Lakukan ini untuk semua pemanas air, pada setiap tanda X saat menghadap pemanas, jalankan urutan tersebut menggunakan konstanta variabel yang sesuai dengan karpet berwarna yang benar agar level dapat diselesaikan.