Bagaimana Anda memunculkan pengecualian dengan python?

Bahan yang Dibutuhkan. Versi terbaru Python (Python 3), lingkungan pengembangan terintegrasi (IDE) pilihan Anda (atau terminal), koneksi internet stabil

Prasyarat/keahlian yang membantu. Pengetahuan dasar tentang Python dan konsep pemrograman

Pengecualian adalah alat yang sangat berguna untuk pemrogram Python. Mereka memungkinkan Anda menangani kesalahan, menulis kode yang lebih mudah dibaca, dan mensimulasikan konsekuensi penerapan. Di akhir tutorial ini, Anda akan dapat menggunakan pengecualian Python untuk membuat kode dengan lebih efisien

TermDefinitionPrintprint() adalah fungsi yang mengubah objek tertentu menjadi teks dan mengirimkannya ke layar atau perangkat keluaran standar lainnya. Raiseraise() adalah fungsi yang menginterupsi proses eksekusi normal suatu program. Ini menandakan adanya keadaan khusus seperti pengecualian atau kesalahan. Melempar Istilah "melempar" digunakan secara sinonim dengan "menaikkan". ” Namun, "melempar" bukanlah kata kunci Python. Traceback Ketika terjadi kesalahan, Anda dapat melacaknya kembali ke sumbernya menggunakan modul Python ini. Traceback melaporkan pemanggilan fungsi yang dilakukan pada titik tertentu dalam kode Anda. Tracebacks dibaca dari bawah ke atas. Syntax ErrorSyntax adalah seperangkat aturan yang mendefinisikan struktur bahasa. Kesalahan sintaksis menunjukkan bahwa Anda telah memasukkan karakter atau string yang tidak dapat dipahami oleh penafsir program.

1
2
3
4
5
6
7
a = 5
b = 0

try:
  quotient = a / b
except:
  print("You cannot divide by zero")
1"Mencoba" adalah kata kunci Python. Ini memungkinkan Anda untuk menguji blok kode untuk kesalahan.
1
2
3
4
5
6
7
a = 5
b = 0

try:
  quotient = a / b
except:
  print("You cannot divide by zero")
2"Kecuali" adalah kata kunci Python yang digunakan untuk menangani pengecualian yang muncul di klausa percobaan sebelumnya

Pengecualian juga dikenal sebagai kesalahan logis. Mereka terjadi selama eksekusi program. Alih-alih membiarkan program mogok saat kesalahan terdeteksi, Python menghasilkan pengecualian yang bisa Anda tangani. Ini sebanding dengan cara iPhone menampilkan peringatan suhu saat ponsel Anda terlalu panas. Alih-alih membiarkan ponsel menjadi terlalu panas, ponsel berhenti berfungsi dan meminta Anda untuk menyelesaikan masalah dengan mendinginkannya. Demikian pula, pengecualian Python menghentikan program dan memberi Anda kesempatan untuk mengatasi kesalahan alih-alih mogok

Ada dua jenis pengecualian Python

1. Pengecualian yang ditentukan pengguna. Pengecualian yang ditentukan pengguna adalah pengecualian khusus yang dibuat oleh pemrogram. Mereka memungkinkan Anda untuk menerapkan batasan atau konsekuensi pada fungsi, nilai, atau variabel tertentu

2. Pengecualian bawaan. Ada banyak jenis pengecualian yang ditentukan sebelumnya oleh Python. Ini disebut pengecualian bawaan. Anda dapat menemukan tabel referensi yang mendefinisikan setiap jenis pengecualian bawaan di bagian bawah halaman ini atau Lembar Cheat Penanganan Pengecualian Python kami

Pengecualian vs. kesalahan sintaks

Pengecualian Kesalahan sintaks Mengubah aliran normal program Menghentikan eksekusi program sepenuhnya Terjadi selama eksekusi, dan tidak selalu dapat dioperasikan Dihasilkan selama parsing, ketika kode sumber diterjemahkan ke dalam kode byte Dapat ditangani saat runtime Tidak dapat ditangani

Anda dapat mempelajari lebih lanjut tentang kesalahan sintaks Python di tutorial sebelumnya di seri ini, Cara Mengidentifikasi dan Mengatasi Kesalahan Sintaks Python

Pesan kesalahan pengecualian

Saat pengecualian dimunculkan dalam kode Anda, Python mencetak traceback. Traceback memberi Anda informasi tentang mengapa kesalahan mungkin terjadi. Ini sebuah contoh.

Bagaimana Anda memunculkan pengecualian dengan python?

Baris terakhir dalam blok kode yang ditunjukkan di atas menunjukkan jenis pengecualian yang terjadi. Anda dapat mempelajari lebih lanjut tentang traceback dengan tutorial berikutnya dalam seri ini, Cara Mengambil, Mencetak, Membaca, dan Mencatat Traceback Python

Untuk menangkap pengecualian Python, gunakan pernyataan try. Pernyataan try termasuk

  • Kata kunci mencoba
  • Sebuah titik dua
  • Blok kode yang dapat menyebabkan kesalahan

Selanjutnya, tulis kode yang ingin Anda tangani pengecualian di klausa kecuali. Ini memungkinkan Anda memberi tahu program operasi mana yang harus dilakukan setelah pengecualian di blok try telah ditangkap. Ini sebuah contoh.

Bagaimana Anda memunculkan pengecualian dengan python?

Dalam contoh di atas, kode di bawah kata kunci

1
2
3
4
5
6
7
a = 5
b = 0

try:
  quotient = a / b
except:
  print("You cannot divide by zero")
1 melontarkan TypeError, karena Anda tidak dapat menambahkan tipe string ke tipe integer. Ini meminta juru bahasa untuk menjalankan blok
1
2
3
4
5
6
7
a = 5
b = 0

try:
  quotient = a / b
except:
  print("You cannot divide by zero")
2 sebagai gantinya

Cobalah sendiri

Bagaimana Anda merevisi kode ini dengan mencoba dan kecuali untuk menghindari pembuatan traceback?

1
2
3
a = 5
b = 0
quotient = a / b
_

1
2
3
4
5
6
7
a = 5
b = 0

try:
  quotient = a / b
except:
  print("You cannot divide by zero")

Metode di atas menunjukkan cara menangkap semua pengecualian dengan Python. Namun, berbagai jenis kesalahan dapat muncul dari kode yang Anda masukkan ke dalam blok percobaan. Jika Anda tidak menentukan pengecualian mana yang harus ditangkap oleh pengecualian khusus, itu akan menangani masing-masing dengan cara yang sama. Anda dapat mengatasi masalah ini dengan beberapa cara. Misalnya, Anda dapat mengantisipasi kesalahan yang mungkin terjadi dan menambahkan kecuali blok yang sesuai untuk masing-masing

Ini sebuah contoh

1
2
3
4
5
6
7
8
9
10
11
12
a = 5
b = "zero"

try:
    quotient = a / b
    print(quotient)
except ZeroDivisionError:
    print("You cannot divide by zero")
except TypeError:
    print("You must convert strings to floats or integers before dividing")
except NameError:
    print("A variable you're trying to use does not exist")
_

Anda juga dapat menentukan beberapa pengecualian sekaligus

1
2
3
4
5
6
7
8
a = 5
b = "zero"

try:
    quotient = a / b
    print(quotient)
except (ZeroDivisionError, TypeError):
    print("This division is impossible")

Misalkan Anda ingin menerapkan beberapa kasus khusus tetapi menangani semua pengecualian lainnya dengan cara yang sama. Dalam hal ini, Anda dapat membuat blok kecuali untuk menangani semua pengecualian lainnya

1
2
3
4
5
6
7
8
9
10
a = 5
b = 0

try:
    quotient = a / c
    print(quotient)
except (ZeroDivisionError, TypeError):
    print("You cannot divide by zero and variables must be floats or integers")
except:
    print("Other error")
_

Cobalah sendiri

Tambahkan pernyataan kecuali ke kode ini yang mencetak "Anda hanya dapat menggabungkan string ke string" jika ada TypeError dan "Ada yang salah" untuk jenis kesalahan lainnya

1
2
greeting = word1+word2
print(greeting)
_

1
2
3
4
5
6
7
try:
  greeting = word1+word2
  print(greeting)
except TypeError:
  print("You can only concatenate strings to strings")
except:
  print("Something else went wrong")

Belajarlah lagi. Cara Menggunakan Pernyataan If-Else Python

Mengapa kita menggunakan coba dan kecuali di Python?

Python mencoba mengeksekusi pernyataan di dalam klausa try terlebih dahulu. Jika terjadi kesalahan, ia melewatkan sisa klausa dan meminta program untuk mengikuti instruksi kecuali klausa Anda. Alih-alih menginstruksikan program secara manual setiap kali menemukan kesalahan tertentu, program dapat menanganinya secara otomatis. Selain itu, menangani pengecualian dengan cara ini memungkinkan Anda mengganti pesan kesalahan juru bahasa dengan pesan yang jauh lebih ramah pengguna

Pernyataan kenaikan memungkinkan Anda untuk memaksa terjadinya kesalahan. Anda dapat menentukan jenis kesalahan dan teks yang dicetak ke pengguna. Perhatikan bahwa argumen untuk menaikkan harus berupa instance pengecualian atau subkelas yang berasal dari

1
2
3
4
5
6
7
a = 5
b = 0

try:
  quotient = a / b
except:
  print("You cannot divide by zero")
5

Contoh. Misalkan Anda ingin memunculkan kesalahan dan menghentikan program jika variabelnya tidak lain adalah string. Dalam hal ini, Anda dapat menulis pengecualian berikut

1
2
3
4
x = -5

if not type(x) is str:
    raise TypeError("Sorry, only strings are allowed")

Dalam blok kode di atas,

1
2
3
4
5
6
7
a = 5
b = 0

try:
  quotient = a / b
except:
  print("You cannot divide by zero")
6 adalah kesalahan yang ditentukan. Itu telah diatur untuk terjadi kapan saja variabel
1
2
3
4
5
6
7
a = 5
b = 0

try:
  quotient = a / b
except:
  print("You cannot divide by zero")
7 bukan string. Teks di dalam tanda kurung mewakili teks yang Anda pilih untuk dicetak ke pengguna

Cobalah sendiri

Bagaimana Anda memunculkan pengecualian yang mencetak "Maaf, harap masukkan angka yang lebih besar dari atau sama dengan 0" jika x adalah angka negatif?

1
2
3
x = -5

if #YOUR CODE HERE:

1
2
3
4
x = -5

if x < 0:
    raise Exception("Sorry, please enter a number greater than or equal to 0")

Di blok pengecualian, tentukan pengecualian dan gunakan fungsi print(). Ini sebuah contoh

1
2
3
4
5
6
7
a = 5
b = 0

try:
  quotient = a / b
except:
  print("You cannot divide by zero")
0

Bagan di bawah ini menguraikan beberapa pengecualian yang paling sering ditemui di Python. Anda dapat melihat daftar pengecualian Python bawaan yang lebih lengkap di Lembar Curang Penanganan Pengecualian Python kami

PengecualianPenjelasanHierarki

1
2
3
4
5
6
7
a = 5
b = 0

try:
  quotient = a / b
except:
  print("You cannot divide by zero")
8Ketika penugasan atau gagal, pengecualian Python ini dimunculkan. Mewarisi dari
1
2
3
4
5
6
7
a = 5
b = 0

try:
  quotient = a / b
except:
  print("You cannot divide by zero")
_9.
1
2
3
4
5
6
7
8
9
10
11
12
a = 5
b = "zero"

try:
    quotient = a / b
    print(quotient)
except ZeroDivisionError:
    print("You cannot divide by zero")
except TypeError:
    print("You must convert strings to floats or integers before dividing")
except NameError:
    print("A variable you're trying to use does not exist")
_0EOF adalah singkatan dari end-of-file. Pengecualian ini muncul saat suatu fungsi mencapai kondisi EOF tanpa membaca data apa pun. Mewarisi dari
1
2
3
4
5
6
7
a = 5
b = 0

try:
  quotient = a / b
except:
  print("You cannot divide by zero")
_9.
1
2
3
4
5
6
7
8
9
10
11
12
a = 5
b = "zero"

try:
    quotient = a / b
    print(quotient)
except ZeroDivisionError:
    print("You cannot divide by zero")
except TypeError:
    print("You must convert strings to floats or integers before dividing")
except NameError:
    print("A variable you're trying to use does not exist")
3Dibesarkan saat kesulitan memuat modul. Dapat juga dimunculkan ketika “dari daftar” di
1
2
3
4
5
6
7
8
9
10
11
12
a = 5
b = "zero"

try:
    quotient = a / b
    print(quotient)
except ZeroDivisionError:
    print("You cannot divide by zero")
except TypeError:
    print("You must convert strings to floats or integers before dividing")
except NameError:
    print("A variable you're trying to use does not exist")
4 menyertakan nama yang tidak dapat ditemukan. Mewarisi dari
1
2
3
4
5
6
7
a = 5
b = 0

try:
  quotient = a / b
except:
  print("You cannot divide by zero")
_9.
1
2
3
4
5
6
7
8
9
10
11
12
a = 5
b = "zero"

try:
    quotient = a / b
    print(quotient)
except ZeroDivisionError:
    print("You cannot divide by zero")
except TypeError:
    print("You must convert strings to floats or integers before dividing")
except NameError:
    print("A variable you're trying to use does not exist")
6Juga dinaikkan oleh impor. Terjadi bila modul tidak dapat ditemukan atau bila
1
2
3
4
5
6
7
8
9
10
11
12
a = 5
b = "zero"

try:
    quotient = a / b
    print(quotient)
except ZeroDivisionError:
    print("You cannot divide by zero")
except TypeError:
    print("You must convert strings to floats or integers before dividing")
except NameError:
    print("A variable you're trying to use does not exist")
7 ditemukan di. Mewarisi dari
1
2
3
4
5
6
7
a = 5
b = 0

try:
  quotient = a / b
except:
  print("You cannot divide by zero")
9 dan merupakan subkelas dari
1
2
3
4
5
6
7
8
9
10
11
12
a = 5
b = "zero"

try:
    quotient = a / b
    print(quotient)
except ZeroDivisionError:
    print("You cannot divide by zero")
except TypeError:
    print("You must convert strings to floats or integers before dividing")
except NameError:
    print("A variable you're trying to use does not exist")
3.
1
2
3
4
5
6
7
8
a = 5
b = "zero"

try:
    quotient = a / b
    print(quotient)
except (ZeroDivisionError, TypeError):
    print("This division is impossible")
0Python memunculkan jenis kesalahan ini ketika argumen kedua dari operasi modulo atau pembagian adalah 0. Mewarisi dari
1
2
3
4
5
6
7
a = 5
b = 0

try:
  quotient = a / b
except:
  print("You cannot divide by zero")
_9 dan merupakan subkelas dari
1
2
3
4
5
6
7
8
a = 5
b = "zero"

try:
    quotient = a / b
    print(quotient)
except (ZeroDivisionError, TypeError):
    print("This division is impossible")
2.
1
2
3
4
5
6
7
8
a = 5
b = "zero"

try:
    quotient = a / b
    print(quotient)
except (ZeroDivisionError, TypeError):
    print("This division is impossible")
3Pengecualian ini terjadi jika urutan subskrip berada di luar jangkauan. Mewarisi dari
1
2
3
4
5
6
7
a = 5
b = 0

try:
  quotient = a / b
except:
  print("You cannot divide by zero")
_9.
1
2
3
4
5
6
7
8
a = 5
b = "zero"

try:
    quotient = a / b
    print(quotient)
except (ZeroDivisionError, TypeError):
    print("This division is impossible")
5Dibesarkan saat kunci pemetaan atau, kunci kamus, tidak ditemukan di kumpulan kunci yang ada. Mewarisi dari
1
2
3
4
5
6
7
a = 5
b = 0

try:
  quotient = a / b
except:
  print("You cannot divide by zero")
_9.
1
2
3
4
5
6
7
8
a = 5
b = "zero"

try:
    quotient = a / b
    print(quotient)
except (ZeroDivisionError, TypeError):
    print("This division is impossible")
7Dibesarkan ketika tidak ada cukup memori untuk operasi saat ini. Pengecualian ini dapat diatasi dengan menghapus objek lain. Mewarisi dari
1
2
3
4
5
6
7
a = 5
b = 0

try:
  quotient = a / b
except:
  print("You cannot divide by zero")
_9.
1
2
3
4
5
6
7
8
a = 5
b = "zero"

try:
    quotient = a / b
    print(quotient)
except (ZeroDivisionError, TypeError):
    print("This division is impossible")
9Ketika nama global atau lokal tidak dapat ditemukan, jenis kesalahan ini muncul. Ketentuan untuk pengecualian ini hanya berlaku untuk nama yang tidak memenuhi syarat. Mewarisi dari
1
2
3
4
5
6
7
a = 5
b = 0

try:
  quotient = a / b
except:
  print("You cannot divide by zero")
_9.
1
2
3
4
5
6
7
8
9
10
a = 5
b = 0

try:
    quotient = a / c
    print(quotient)
except (ZeroDivisionError, TypeError):
    print("You cannot divide by zero and variables must be floats or integers")
except:
    print("Other error")
1Kelas dasar untuk masalah yang berkaitan dengan koneksi. Mewarisi dari
1
2
3
4
5
6
7
a = 5
b = 0

try:
  quotient = a / b
except:
  print("You cannot divide by zero")
_9, milik subkelas pengecualian OS.
1
2
3
4
5
6
7
a = 5
b = 0

try:
  quotient = a / b
except:
  print("You cannot divide by zero")
6Jika operasi atau fungsi diterapkan ke objek dengan tipe yang tidak tepat, Python memunculkan pengecualian ini. Mewarisi dari
1
2
3
4
5
6
7
a = 5
b = 0

try:
  quotient = a / b
except:
  print("You cannot divide by zero")
_9.
1
2
3
4
5
6
7
8
9
10
a = 5
b = 0

try:
    quotient = a / c
    print(quotient)
except (ZeroDivisionError, TypeError):
    print("You cannot divide by zero and variables must be floats or integers")
except:
    print("Other error")
5Dibesarkan ketika sebuah operasi atau fungsi menerima jenis argumen yang tepat tetapi nilai yang salah dan tidak dapat dicocokkan dengan pengecualian yang lebih spesifik. Mewarisi dari
1
2
3
4
5
6
7
a = 5
b = 0

try:
  quotient = a / b
except:
  print("You cannot divide by zero")
_9

  • Pengecualian terjadi selama eksekusi program
  • Ada pengecualian bawaan dan pengecualian yang ditentukan pengguna
  • Kelas dasar tidak boleh diwarisi oleh kelas yang ditentukan pengguna
  • Anda dapat menggunakan coba dan kecuali di Python untuk menangkap pengecualian

Cara lain untuk tetap mengikuti rilis dan tip Python adalah dengan terlibat dengan komunitas Python. Pertimbangkan untuk berlangganan buletin email Python gratis atau terhubung dengan rekan-rekan dengan bergabung dengan saluran Slack pemrograman Python

Ambil langkah selanjutnya dalam menguasai bahasa Python dengan menyelesaikan Proyek Terpandu seperti Pengujian dan Debugging Python. Untuk eksplorasi lebih dalam tentang bahasa yang memberi penghargaan pada pekerjaan Anda dengan sertifikat, pertimbangkan kursus online seperti Pemrograman Python 3 dari University of Michigan

Bagaimana Anda memunculkan dan menangkap pengecualian dengan Python?

naikan memungkinkan Anda melempar pengecualian kapan saja. menegaskan memungkinkan Anda untuk memverifikasi jika kondisi tertentu terpenuhi dan mengeluarkan pengecualian jika tidak. Dalam klausa try, semua pernyataan dieksekusi hingga pengecualian ditemukan. kecuali digunakan untuk menangkap dan menangani pengecualian yang ditemui dalam klausa try .

Bagaimana Anda memberikan kenaikan gaji dengan Python?

Kata kunci raise digunakan untuk memunculkan exception . Anda dapat menentukan jenis kesalahan apa yang akan dimunculkan, dan teks yang akan dicetak ke pengguna.

Mengapa kami memunculkan pengecualian dengan Python?

Terkadang Anda ingin Python melontarkan pengecualian khusus untuk penanganan kesalahan. Anda dapat melakukan ini dengan memeriksa suatu kondisi dan menaikkan pengecualian, jika kondisinya Benar. Pengecualian yang dimunculkan biasanya memperingatkan pengguna atau aplikasi pemanggil .

Bagaimana Anda memunculkan pengecualian dalam suatu fungsi?

Jika Anda memiliki kondisi tertentu dalam fungsi Anda yang seharusnya membuat program Anda crash dengan keras (jika/ketika kondisi itu terpenuhi), Anda dapat mengajukan pengecualian dengan menggunakan pernyataan kenaikan dan memberikan . Anda bisa membuat objek pengecualian dengan memanggil kelas pengecualian, meneruskan pesan kesalahan yang bermanfaat. . You can make an exception object by calling an exception class, passing in a helpful error message.