Chapter 14: Exceptions Handling

Kasus Nyata: Menangani Error pada Sistem Monitoring Energi Eco Techno Leader

Eco Techno Leader perlu menangani error saat monitoring energi, seperti pembagian nol atau file tidak ditemukan. Kita akan gunakan try-except untuk ini.

Level Beginner: Menangani ZeroDivisionError

Kita coba hitung efisiensi, tapi energi inputnya nol.

try:
    energi_input = 0
    energi_output = 850
    efisiensi = (energi_output / energi_input) * 100
    print("Efisiensi:", efisiensi)
except ZeroDivisionError:
    print("Error: Energi input tidak boleh nol!")

Hasil di Command Prompt:

Error: Energi input tidak boleh nol!

Do: Gunakan try-except untuk tangani error tertentu.

Don't: Jangan biarkan error tanpa penanganan, soalnya program akan crash.

Level Intermediate: Menangani FileNotFoundError

Kita coba baca file log yang gak ada.

try:
    with open("log_energi_hilang.txt", "r") as file:
        isi_log = file.read()
    print(isi_log)
except FileNotFoundError:
    print("Error: File log tidak ditemukan, pastikan file ada!")
except Exception as e:
    print("Error lain terjadi:", e)

Hasil di Command Prompt:

Error: File log tidak ditemukan, pastikan file ada!

Do: Gunakan exception spesifik (FileNotFoundError) sebelum exception umum (Exception).

Don't: Jangan pake Exception aja tanpa spesifik, soalnya gak jelas errornya apa.

Level Advanced: Menggunakan else dan finally

Kita tangani error lengkap saat menghitung rata-rata dari file log.

try:
    with open("log_energi.txt", "r") as file:
        lines = file.readlines()
    energi_list = [int(line.split(": ")[1].split(" ")[0]) for line in lines]
except FileNotFoundError:
    print("Error: File log tidak ditemukan!")
except ValueError:
    print("Error: Data di file tidak valid!")
else:
    rata_rata = sum(energi_list) / len(energi_list)
    print("Rata-rata produksi energi:", rata_rata, "kWh")
finally:
    print("Proses selesai, lanjutkan monitoring.")

Hasil di Command Prompt (jika file ada dan valid):

Rata-rata produksi energi: 4766.666666666667 kWh
Proses selesai, lanjutkan monitoring.

Do: Gunakan else untuk kode yang hanya jalan kalau gak ada error, dan finally untuk kode yang selalu jalan.

Don't: Jangan pake finally untuk kode yang gak perlu dijalankan setiap saat.

"Setiap error adalah pelajaran. Bersyukurlah kepada Tuhan karena kamu diberi kesempatan untuk terus memperbaiki diri! ⚙️"