Bagaimana cara mencatat pesan pengecualian dengan python?

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+

Bagaimana cara mencatat pengecualian di logger?

Untuk mencatat pengecualian yang ditangani . Gunakan Coba. Tangkap blok untuk menangkap pengecualian. Letakkan kode yang dapat menghasilkan pengecualian di blok Coba. Create the method that will generate the exception information. Use a Try...Catch block to catch the exception. Put the code that could generate an exception in the Try block.

Bagaimana cara mencatat traceback pengecualian dengan Python?

Setelah menangkap pengecualian, Anda dapat menangkap dan mencatat pesan dengan info pengecualian (termasuk pelacakan balik tumpukan penuh), menggunakan pencatatan log. exception() atau logging. kesalahan() . Dalam kedua kasus, pesan Error yang terjadi dicatat dengan level ERROR pada root logger bersama dengan informasi pengecualian.

Bagaimana Anda menangkap kesalahan dengan Python?

Blok coba dan kecuali di Python digunakan untuk menangkap dan menangani pengecualian . Python mengeksekusi kode mengikuti pernyataan try sebagai bagian "normal" dari program. Kode yang mengikuti pernyataan exception adalah respons program terhadap pengecualian apa pun di klausa try sebelumnya.

Bagaimana Anda mencetak detail pengecualian dengan Python?

Jika Anda akan mencetak pengecualian, lebih baik menggunakan print(repr(e)) ; dasar Pengecualian. Implementasi __str__ hanya mengembalikan pesan pengecualian, bukan jenisnya. Atau, gunakan modul traceback, yang memiliki metode untuk mencetak pengecualian saat ini, diformat, atau traceback penuh.

Postingan terbaru

LIHAT SEMUA