Dalam pengembangan perangkat lunak, berbagai jenis kesalahan dapat terjadi. Itu bisa berupa kesalahan sintaksis, kesalahan logis, atau kesalahan runtime
Kesalahan sintaks kemungkinan besar terjadi selama fase pengembangan awal dan merupakan hasil dari sintaks yang salah. Kesalahan sintaks dapat ditangkap dengan mudah saat program dikompilasi untuk dieksekusi
Kesalahan logis, di sisi lain, adalah hasil dari implementasi logis yang tidak tepat. Contohnya adalah program yang mengakses daftar yang tidak disortir dengan asumsi itu akan diurutkan. Kesalahan logis adalah yang paling sulit dilacak
Kesalahan runtime adalah kesalahan paling menarik yang terjadi, jika kami tidak mempertimbangkan semua kasus sudut. Contohnya adalah mencoba mengakses file yang tidak ada
Dalam tutorial ini, kita akan belajar cara menangani error di Python dan cara mencatat error untuk pemahaman yang lebih baik tentang apa yang salah dalam aplikasi
Menangani Pengecualian dengan Python
Mari kita mulai dengan program sederhana untuk menjumlahkan dua angka dengan Python. Program kami mengambil dua parameter sebagai input dan mencetak jumlahnya. Berikut adalah program Python untuk menjumlahkan dua angka
1def addNumbers(a, b): 2 print a + b 34addNumbers(5, 10)
Coba jalankan program Python di atas, dan Anda harus mencetak jumlahnya
2_03
Saat menulis program di atas, kami tidak benar-benar mempertimbangkan fakta bahwa ada yang salah. Bagaimana jika salah satu parameter yang dilewatkan bukan angka?
1addNumbers('', 10)
Kami belum menangani kasus itu, maka program kami akan macet dengan pesan kesalahan berikut
1def addNumbers(a, b): 02def addNumbers(a, b): 23def addNumbers(a, b): 44def addNumbers(a, b): 6def addNumbers(a, b): 7def addNumbers(a, b): 8def addNumbers(a, b): 920
Kami dapat menangani masalah di atas dengan memeriksa apakah parameter yang dikirimkan adalah bilangan bulat. Tapi itu tidak akan menyelesaikan masalah. Bagaimana jika kode rusak karena alasan lain dan menyebabkan program mogok? . Bahkan jika terjadi kesalahan yang tidak diketahui, kode harus cukup kuat untuk menangani kerusakan dengan baik dan memberi tahu pengguna bahwa ada sesuatu yang salah
Menangani Pengecualian Menggunakan 204 dan 205
Dalam Python, kami menggunakan pernyataan 2_04 dan 205 untuk menangani pengecualian. Setiap kali kode rusak, pengecualian dilemparkan tanpa merusak program. Mari ubah program tambah angka untuk menyertakan pernyataan 204 dan 205
1def addNumbers(a, b): 224326428________1______7 print a + b 0def addNumbers(a, b): 9 print a + b 2 print a + b 3 print a + b 4
Python akan memproses semua kode di dalam pernyataan 2_04 dan 205. Saat menemui kesalahan, kontrol diteruskan ke blok 205, melewatkan kode di antaranya
Seperti yang terlihat pada kode di atas, kita telah memindahkan kode kita ke dalam pernyataan 204 dan 205. Coba jalankan program dan itu akan menampilkan pesan kesalahan alih-alih merusak program. Alasan pengecualian juga dikembalikan sebagai pesan pengecualian
Metode di atas menangani pengecualian tak terduga. Mari kita lihat cara menangani pengecualian yang diharapkan. Asumsikan bahwa kita mencoba membaca file tertentu menggunakan program Python kita, tetapi file tersebut tidak ada. Dalam hal ini, kami akan menangani pengecualian dan memberi tahu pengguna bahwa file tersebut tidak ada saat itu terjadi. Lihat kode membaca file
1 print a + b 6224330432def addNumbers(a, b): 734def addNumbers(a, b): 936 print a + b 338_______4_______9_______
Pada kode di atas, kita telah menangani pembacaan file di dalam 215 exception handler. Jika kode rusak karena 2_16 tidak tersedia, kesalahan akan ditangani di dalam penangan 215. Mirip dengan pengecualian 2_15, ada lebih banyak pengecualian standar seperti 219, 220, dan 221, untuk menyebutkan beberapa
Beberapa Pengecualian
Kami dapat menangani beberapa pengecualian sekaligus dengan memukul pengecualian standar seperti yang ditunjukkan
1 print a + b 6244346448def addNumbers(a, b): 7addNumbers(5, 10) 0def addNumbers(a, b): 940
Kode di atas akan memunculkan pengecualian 2_15 dan 223 saat program dijalankan
224 Klausa
Asumsikan bahwa kita menggunakan sumber daya tertentu dalam program Python kita. Selama eksekusi program, ia mengalami kesalahan dan hanya dieksekusi setengah jalan. Dalam hal ini, sumber daya akan ditahan secara tidak perlu. Kami dapat membersihkan sumber daya tersebut menggunakan klausa 224. Lihatlah kode di bawah ini
1 print a + b 62addNumbers(5, 10) 6324410def addNumbers(a, b): 712def addNumbers(a, b): 914 print a + b 3________0______6_______4_______9_______
Jika, selama eksekusi kode di atas, pengecualian dimunculkan saat membaca file, 226 akan ditutup di blok 224
Pengecualian Buatan Pengguna
Sejauh ini, kita telah membahas pengecualian yang disediakan oleh Python, tetapi bagaimana jika Anda ingin menentukan pengecualian khusus Anda sendiri? . Keuntungan membuat pengecualian yang ditentukan pengguna adalah bahwa mereka masuk akal dalam program kami. Misalnya, Anda memiliki program yang memastikan bahwa harga diskon suatu barang tidak lebih dari harga jual. Mari buat pengecualian khusus untuk jenis kesalahan ini
1addNumbers('', 10) 02addNumbers('', 10) 2
Selanjutnya, tambahkan pengecualian sebagai berikut
1addNumbers('', 10) 42addNumbers('', 10) 63addNumbers('', 10) 8410def addNumbers(a, b): 712
Dalam kode di atas, pernyataan 229 memaksa pengecualian 230 terjadi
Sekarang, jika Anda memanggil fungsi dengan nilai di mana 231 lebih besar dari harga, Anda akan mendapatkan kesalahan, seperti yang ditunjukkan di bawah ini
1142163184def addNumbers(a, b): 00def addNumbers(a, b): 7def addNumbers(a, b): 02def addNumbers(a, b): 9def addNumbers(a, b): 04
Kesalahan di atas tidak memberikan pesan deskriptif;
1addNumbers('', 10) 02def addNumbers(a, b): 083def addNumbers(a, b): 104def addNumbers(a, b): 12def addNumbers(a, b): 7 print a + b 2def addNumbers(a, b): 9def addNumbers(a, b): 16 print a + b 3________1______18
Sekarang, mari terapkan kesalahan dan panggil fungsi kita
1addNumbers('', 10) 42addNumbers('', 10) 63def addNumbers(a, b): 24410def addNumbers(a, b): 712def addNumbers(a, b): 9def addNumbers(a, b): 30 print a + b 3def addNumbers(a, b): 32
Sekarang, jika Anda memanggil fungsi tersebut, Anda akan mendapatkan kesalahan berikut
1def addNumbers(a, b): 342143def addNumbers(a, b): 38418def addNumbers(a, b): 7def addNumbers(a, b): 42def addNumbers(a, b): 9def addNumbers(a, b): 44 print a + b 3def addNumbers(a, b): 46
Masuk dengan Python
Ketika terjadi kesalahan dalam aplikasi, akan lebih mudah untuk melakukan debug jika kita mengetahui sumber kesalahannya. Saat pengecualian muncul, kami dapat mencatat informasi yang diperlukan untuk melacak masalah. Python menyediakan perpustakaan logging yang sederhana dan kuat. Mari kita lihat cara menggunakan logging di Python
1 print a + b 62def addNumbers(a, b): 503addNumbers(5, 10) 6424def addNumbers(a, b): 7def addNumbers(a, b): 56def addNumbers(a, b): 910 print a + b 3483912def addNumbers(a, b): 6314def addNumbers(a, b): 6516def addNumbers(a, b): 67def addNumbers(a, b): 68
Seperti yang terlihat pada kode di atas, pertama-tama kita perlu mengimpor library logging Python dan kemudian menginisialisasi logger dengan nama file log dan level logging. Ada lima level logging. 232, 233, 234, 235, dan 236. Di sini kita telah menetapkan level logging ke 233, sehingga setiap pesan yang memiliki level 233 akan dicatat
Mendapatkan Stack Trace
Dalam kode di atas kami memiliki satu file program, jadi lebih mudah untuk mengetahui di mana kesalahan itu terjadi. Tapi apa yang kita lakukan ketika banyak file program terlibat? . Jejak tumpukan pengecualian dapat dicatat seperti yang ditunjukkan
1def addNumbers(a, b): 7023def addNumbers(a, b): 734def addNumbers(a, b): 75def addNumbers(a, b): 7def addNumbers(a, b): 9 print a + b 6 print a + b 3def addNumbers(a, b): 803924def addNumbers(a, b): 6310def addNumbers(a, b): 6512def addNumbers(a, b): 6714def addNumbers(a, b): 8916def addNumbers(a, b): 91def addNumbers(a, b): 92
Jika Anda mencoba menjalankan program di atas, saat memunculkan pengecualian, kesalahan berikut akan dicatat dalam file log
1def addNumbers(a, b): 942def addNumbers(a, b): 03def addNumbers(a, b): 984200def addNumbers(a, b): 7202
Membungkusnya
Dalam tutorial ini, kita melihat cara memulai penanganan error di Python dan menggunakan modul logging untuk mencatat error. Kami melihat penggunaan pernyataan 2_04, 205, dan 224, yang cukup berguna saat menangani penanganan kesalahan di Python. Untuk informasi lebih rinci, saya akan merekomendasikan membaca dokumentasi resmi tentang logging. Lihat juga dokumentasi untuk menangani pengecualian dengan Python
Postingan ini telah diperbarui dengan kontribusi dari Esther Vaati. Esther adalah pengembang perangkat lunak dan penulis untuk Envato Tuts+