Penanganan kesalahan adalah aspek penting dari pengkodean. Ketika kesalahan diperlakukan dengan benar, program beroperasi dengan lancar dan tidak menyebabkan crash yang mengganggu bagi pengguna akhir. Dalam Python, penanganan kesalahan terjadi dengan konstruksi kode coba-kecuali. (Jika Anda berasal dari bahasa pemrograman lain, tidak ada pernyataan try-catch di Python. ) Show
Kode coba-kecuali berfungsi sedemikian rupa sehingga mencoba menjalankan ekspresi atau sepotong kode. Jika proses gagal, Python melanjutkan untuk menjalankan tindakan di blok kecuali. Jika proses berhasil, tidak ada tindakan lebih lanjut yang diambil Sebagai contoh cepat, mari kita coba mencetak nilai yang tidak ditentukan dan menampilkan kesalahan jika gagal try: print(x) except: print("Exception thrown. x does not exist.") Keluaran Exception thrown. x does not exist._
Ini adalah panduan definitif untuk menangani kesalahan dalam Python. Anda akan mempelajari cara menggunakan struktur try…except untuk menangani pengecualian dalam kode Anda. Selain itu, Anda belajar cara menangani banyak pengecualian dan cara menambahkan blok finally dan else dalam kode penanganan kesalahan untuk selalu menjalankan tindakan. Semua teori didukung dengan contoh-contoh yang bagus dan ilustratif Mari lompat ke dalamnya Apa itu Penanganan Error dalam Coding?Setiap kali Anda menulis kode perangkat lunak, selalu ada kemungkinan terjadi kesalahan Misalnya, jika Anda mengharapkan pengguna untuk memasukkan angka tetapi mereka malah memasukkan teks, program dapat macet jika Anda tidak mempersiapkan input yang salah tersebut. Penanganan error adalah bagian penting dari penulisan kode yang mempertahankan aliran normal program Anda tanpa crash dan gangguan lainnya Jika Anda pernah menggunakan aplikasi seluler, dan tiba-tiba aplikasi ditutup tanpa peringatan, ada kesalahan yang tidak tertangani di balik layar. Bisa jadi kode perangkat lunak mencoba membaca nilai yang tidak ada. Meskipun demikian, ini sangat mengganggu pengguna akhir aplikasi Anda, bukan? Saat menulis kode perangkat lunak, Anda harus selalu mengingat kesalahan apa yang mungkin terjadi untuk menghindari program yang menyebabkan gangguan yang mengganggu Sebagai contoh, jika fungsi Python beroperasi dengan asumsi bahwa nilai input selalu bilangan bulat, itu bisa menyebabkan crash jika inputnya berupa string. Untuk menghindari crash seperti ini, Anda perlu menulis kode sedemikian rupa sehingga ia tahu apa yang harus dilakukan jika seseorang secara tidak sengaja memasukkan string, bukan integer. Di sinilah penanganan kesalahan membantu. Di Python, Anda dapat melakukan penanganan error dengan struktur kode coba-kecuali yang sederhana. Idenya adalah mencoba menjalankan sepotong kode. Jika uji coba gagal, maka kecuali blok menangani kesalahan alih-alih membiarkan program macet Pola Coba-Kecuali dalam Penanganan Kesalahan PythonDi Python, Anda bisa menggunakan pernyataan coba-kecuali untuk menangani kesalahan dan pengecualian yang mungkin terjadi saat Anda menjalankan kode Kesalahan yang terjadi selama eksekusi program disebut pengecualian. Di Python, ekspresi yang salah meningkatkan kesalahan dan pengecualian yang akan merusak program Anda jika Anda tidak menangani pengecualian dengan benar Misalnya, contoh klasik pengecualian adalah saat Anda mencoba mengakses nilai yang tidak ditentukan atau membagi angka dengan 0 Crash yang tiba-tiba tidak menguntungkan bagi Anda sebagai pengembang, apalagi bagi pengguna akhir aplikasi Anda Di sinilah mekanisme penanganan kesalahan bawaan membantu. Alih-alih membiarkan program Anda macet, Anda menangani kesalahan selama runtime dan eksekusi program berlanjut Pola penanganan kesalahan di Python terdiri dari berikut ini
Inilah percobaan umum kecuali struktur kode try: <actions> except Exception: <handle the exception here> Kode ini cukup intuitif untuk dibaca. Percobaan menentukan blok kode yang coba dijalankan oleh Python. Jika proses gagal, kecuali blok menangkap pengecualian dan menjalankan beberapa kode ContohSebagai contoh, mari jalankan kode coba-kecuali untuk memastikan kode tidak macet jika variabel x tidak ditentukan try: print(x) except: print("Exception thrown. x does not exist.") Perhatikan bahwa meskipun potongan kode ini mencegahnya mogok, cara penulisannya saat ini adalah praktik yang buruk. Ini karena kami tidak menentukan jenis kesalahan yang kami harapkan di blok kecuali Tentukan Jenis KesalahanUntuk memperbaiki contoh sebelumnya, Anda perlu tahu bahwa ketika Anda mengakses variabel yang tidak terdefinisi dengan Python, Anda harus mengharapkannya menyebabkan NameError Sekarang Anda dapat mengharapkan NameError potensial di kecuali blok try: print(x) except NameError: print("NameError: x is not defined.")_ Keluaran NameError: x is not defined. Ini tidak hanya membuat kode lebih mudah dibaca tetapi juga memastikan Anda tahu apa yang Anda lakukan. Jauh lebih baik untuk menentukan jenis (atau jenis) kesalahan yang mungkin Anda hadapi daripada hanya menangkap kesalahan umum Sekarang, bagaimana jika ada lebih dari satu pengecualian yang mungkin terjadi? . Python memungkinkan Anda menentukan blok kecuali sebanyak yang diperlukan Beberapa Pengecualian dalam Penanganan Kesalahan PythonDi Python, Anda dapat memiliki banyak blok kecuali untuk menangani berbagai jenis kesalahan secara terpisah try: <do something> except Exception1: <handle the this error type> except Exception2: <handle the this error type> except Exception3: <handle the this error type>_ Ini paling baik ditunjukkan dengan sebuah contoh ContohMari buat skrip yang membagi dua angka satu sama lain. Dalam hal membagi angka, ada dua hal yang bisa salah
Masalah pertama akan memunculkan NameError. Masalah kedua menyebabkan ZeroDivisionError Untuk mencegah error yang disebabkan oleh dua potensi masalah ini, Anda perlu menangani kedua jenis error dalam kode Anda. Untuk melakukan ini, mari tentukan beberapa logika penanganan kesalahan coba-kecuali dalam kode Dalam struktur coba-kecuali, Anda ingin menangani kedua pengecualian secara terpisah. Jadi, Anda memerlukan dua kecuali blok untuk kasus yang berbeda try: result = x / y except ZeroDivisionError: print("Make sure no divisions by 0 are made.") except NameError: print("Make sure both numbers are defined.") Omong-omong, silakan salin-tempel kode di atas ke editor kode Anda dan jalankan kode untuk melihat apa yang terjadi Sekarang, karena x dan y tidak ditentukan, program tidak akan macet berkat penanganan kesalahan yang Anda lakukan. Sebagai gantinya, program akan mencetak pesan yang Anda tentukan yang akan ditampilkan jika terjadi NameError Make sure both numbers are defined_ Sekarang, mari kita definisikan x dan y, tapi mari kita jadikan y nol x = 10 y = 0 try: result = x / y except ZeroDivisionError: print("Make sure no divisions by 0 are made.") except NameError: print("Make sure both numbers are defined.")_ Karena membagi dengan 0 secara matematis tidak mungkin, ini menyebabkan kesalahan. Namun berkat penanganan kesalahan Anda yang hati-hati, kesalahan ini tidak merusak program. Sebaliknya, itu menunjukkan ada kesalahan membagi dengan 0 Exception thrown. x does not exist._0 Terakhir, mari kita menulis kode sedemikian rupa sehingga tidak ada lagi kesalahan Exception thrown. x does not exist._1 Sekarang tidak ada pesan kesalahan. Ini berarti program berjalan dengan sukses karena x dan y keduanya terdefinisi dan y bukan 0 Akhirnya Blokir dalam Penanganan Kesalahan PythonDengan Python, Anda dapat menambahkan blok finally dalam kode penanganan error try-exception. Blok terakhir adalah blok opsional yang berjalan terlepas dari apakah ada kesalahan atau tidak Misalnya, mari kita jalankan fungsi yang menangani kesalahan tanpa blok akhirnya Exception thrown. x does not exist._2 Keluaran Exception thrown. x does not exist._3 Perhatikan bahwa fungsi tidak pernah mencetak "Yay" karena kembali sebelumnya Untuk mencetak bagian "Yay" dari kode, Anda perlu menambahkan blok terakhir dalam struktur penanganan kesalahan. Blok akhirnya akan berjalan apa pun yang terjadi. Bahkan jika fungsi mengembalikan nilai, blok akhirnya akan berjalan dan menyelesaikan apa yang harus dilakukan dalam kode penanganan kesalahan Exception thrown. x does not exist._4 Keluaran Exception thrown. x does not exist._5 Lain Blok dalam Penanganan Kesalahan PythonAnda juga dapat menambahkan blok lain opsional setelah kecuali blok di Python. Gagasan dari blok else adalah menjalankan kode jika tidak ada kesalahan dalam urutan penanganan kesalahan Misalnya, mari kita membagi dua angka satu sama lain, menangkap potensi kesalahan, dan mencetak pesan sukses jika tidak ada kesalahan yang terjadi Exception thrown. x does not exist._6 KesimpulanDi Python, tidak ada pernyataan try-catch. Sebaliknya, Python memiliki versinya sendiri yang disebut coba-kecuali. Struktur kode coba-kecuali digunakan untuk menangani kesalahan dan pengecualian Bisakah Anda mengajukan pengecualian di blok percobaan?Tempatkan pernyataan kode apa pun yang mungkin memunculkan atau melontarkan pengecualian di blok try , dan tempatkan pernyataan yang digunakan untuk menangani pengecualian atau pengecualian di satu atau beberapa blok catch di bawah blok try. Setiap blok tangkapan mencakup jenis pengecualian dan dapat berisi pernyataan tambahan yang diperlukan untuk menangani jenis pengecualian tersebut.
Bisakah kita menggunakan kata kunci kenaikan di blok TRY?Sementara blok coba dan kecuali adalah untuk menangani pengecualian, sebaliknya kata kunci kenaikan adalah untuk memunculkan pengecualian .
Bagaimana Anda melempar kesalahan di blok percobaan?Lempar, dan Coba. Menangkap. Akhirnya
. Pernyataan catch mendefinisikan blok kode untuk menangani kesalahan apa pun. Pernyataan akhirnya mendefinisikan blok kode untuk dijalankan terlepas dari hasilnya. Pernyataan throw mendefinisikan kesalahan khusus .
Bagaimana cara menaikkan pengecualian secara manual?menaikkan Pengecualian("Saya tahu Python. ") Ganti Pengecualian dengan jenis pengecualian tertentu yang ingin Anda lempar. . Tingkatkan pengecualian vs. meningkatkan pengecualian (args). Kenaikan pernyataan. Pernyataan kenaikan tanpa argumen memunculkan kembali pengecualian terakhir. . Naikkan pengecualian (args) dari original_exception |