Python meningkatkan pengecualian dari yang lain

Program Python berhenti segera setelah menemukan kesalahan. Di Python, kesalahan bisa berupa kesalahan sintaksis atau pengecualian. Pada artikel ini, Anda akan melihat apa itu pengecualian dan perbedaannya dari kesalahan sintaksis. Setelah itu, Anda akan belajar tentang memunculkan pengecualian dan membuat pernyataan. Kemudian, Anda akan menyelesaikannya dengan demonstrasi blok coba dan kecuali

Python meningkatkan pengecualian dari yang lain

Unduhan PDF gratis. Lembar Curang Python 3

Pengecualian versus Kesalahan Sintaks

Kesalahan sintaks terjadi ketika parser mendeteksi pernyataan yang salah. Perhatikan contoh berikut

>>> print( 0 / 0 ))
  File "<stdin>", line 1
    print( 0 / 0 ))
                  ^
SyntaxError: invalid syntax

Panah menunjukkan di mana parser mengalami kesalahan sintaksis. Dalam contoh ini, ada satu braket yang terlalu banyak. Hapus dan jalankan kode Anda lagi

>>> print( 0 / 0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
_

Kali ini, Anda mengalami error pengecualian. Jenis kesalahan ini terjadi setiap kali kode Python yang benar secara sintaksis menghasilkan kesalahan. Baris terakhir pesan menunjukkan jenis kesalahan pengecualian apa yang Anda temui

Alih-alih menampilkan pesan

x = 10
if x > 5:
    raise Exception('x should not exceed 5. The value of x was: {}'.format(x))
_6, Python merinci jenis kesalahan pengecualian apa yang ditemui. Dalam hal ini, itu adalah
x = 10
if x > 5:
    raise Exception('x should not exceed 5. The value of x was: {}'.format(x))
_7. Python hadir dengan berbagai pengecualian bawaan serta kemungkinan untuk membuat pengecualian yang ditentukan sendiri

Hilangkan iklan

Meningkatkan Pengecualian

Kita dapat menggunakan

x = 10
if x > 5:
    raise Exception('x should not exceed 5. The value of x was: {}'.format(x))
_8 untuk membuang pengecualian jika suatu kondisi terjadi. Pernyataan tersebut dapat dilengkapi dengan pengecualian khusus

Python meningkatkan pengecualian dari yang lain

Jika Anda ingin melempar kesalahan ketika kondisi tertentu terjadi menggunakan

x = 10
if x > 5:
    raise Exception('x should not exceed 5. The value of x was: {}'.format(x))
8, Anda bisa melakukannya seperti ini

x = 10
if x > 5:
    raise Exception('x should not exceed 5. The value of x was: {}'.format(x))

Ketika Anda menjalankan kode ini, hasilnya adalah sebagai berikut

Traceback (most recent call last):
  File "<input>", line 4, in <module>
Exception: x should not exceed 5. The value of x was: 10

Program berhenti dan menampilkan pengecualian kami ke layar, menawarkan petunjuk tentang apa yang salah

Pengecualian Traceback (most recent call last): File "<input>", line 4, in <module> Exception: x should not exceed 5. The value of x was: 10 _0

Alih-alih menunggu program mogok di tengah jalan, Anda juga bisa memulai dengan membuat pernyataan dengan Python. Kami

Traceback (most recent call last):
  File "<input>", line 4, in <module>
Exception: x should not exceed 5. The value of x was: 10
_1 bahwa kondisi tertentu terpenuhi. Jika kondisi ini ternyata
Traceback (most recent call last):
  File "<input>", line 4, in <module>
Exception: x should not exceed 5. The value of x was: 10
_2, maka itu bagus sekali. Program dapat dilanjutkan. Jika kondisinya ternyata
Traceback (most recent call last):
  File "<input>", line 4, in <module>
Exception: x should not exceed 5. The value of x was: 10
3, Anda dapat meminta program untuk memberikan pengecualian
Traceback (most recent call last):
  File "<input>", line 4, in <module>
Exception: x should not exceed 5. The value of x was: 10
0

Python meningkatkan pengecualian dari yang lain

Lihat contoh berikut, di mana dinyatakan bahwa kode akan dijalankan pada sistem Linux

import sys
assert ('linux' in sys.platform), "This code runs on Linux only."

Jika Anda menjalankan kode ini di mesin Linux, pernyataan akan diteruskan. Jika Anda menjalankan kode ini di mesin Windows, hasil pernyataannya adalah

Traceback (most recent call last):
  File "<input>", line 4, in <module>
Exception: x should not exceed 5. The value of x was: 10
3 dan hasilnya adalah sebagai berikut

Traceback (most recent call last):
  File "<input>", line 2, in <module>
AssertionError: This code runs on Linux only.

Dalam contoh ini, melempar pengecualian

Traceback (most recent call last):
  File "<input>", line 4, in <module>
Exception: x should not exceed 5. The value of x was: 10
_0 adalah hal terakhir yang akan dilakukan program. Program akan berhenti dan tidak akan berlanjut. Bagaimana jika itu bukan yang Anda inginkan?

Blok Traceback (most recent call last): File "<input>", line 4, in <module> Exception: x should not exceed 5. The value of x was: 10 7 dan Traceback (most recent call last): File "<input>", line 4, in <module> Exception: x should not exceed 5. The value of x was: 10 8. Menangani Pengecualian

Blok

Traceback (most recent call last):
  File "<input>", line 4, in <module>
Exception: x should not exceed 5. The value of x was: 10
7 dan
Traceback (most recent call last):
  File "<input>", line 4, in <module>
Exception: x should not exceed 5. The value of x was: 10
8 di Python digunakan untuk menangkap dan menangani pengecualian. Python mengeksekusi kode mengikuti pernyataan
Traceback (most recent call last):
  File "<input>", line 4, in <module>
Exception: x should not exceed 5. The value of x was: 10
_7 sebagai bagian "normal" dari program. Kode yang mengikuti pernyataan
Traceback (most recent call last):
  File "<input>", line 4, in <module>
Exception: x should not exceed 5. The value of x was: 10
_8 adalah respons program terhadap pengecualian apa pun dalam klausa
Traceback (most recent call last):
  File "<input>", line 4, in <module>
Exception: x should not exceed 5. The value of x was: 10
7 sebelumnya

Python meningkatkan pengecualian dari yang lain

Seperti yang Anda lihat sebelumnya, ketika kode yang benar secara sintaksis mengalami kesalahan, Python akan memunculkan kesalahan pengecualian. Kesalahan pengecualian ini akan merusak program jika tidak ditangani. Klausa

Traceback (most recent call last):
  File "<input>", line 4, in <module>
Exception: x should not exceed 5. The value of x was: 10
_8 menentukan bagaimana program Anda merespons pengecualian

Fungsi berikut dapat membantu Anda memahami blok

Traceback (most recent call last):
  File "<input>", line 4, in <module>
Exception: x should not exceed 5. The value of x was: 10
7 dan
Traceback (most recent call last):
  File "<input>", line 4, in <module>
Exception: x should not exceed 5. The value of x was: 10
8

def linux_interaction():
    assert ('linux' in sys.platform), "Function can only run on Linux systems."
    print('Doing something.')

import sys
assert ('linux' in sys.platform), "This code runs on Linux only."
_7 hanya dapat berjalan di sistem Linux.
Traceback (most recent call last):
  File "<input>", line 4, in <module>
Exception: x should not exceed 5. The value of x was: 10
_1 dalam fungsi ini akan menampilkan pengecualian
Traceback (most recent call last):
  File "<input>", line 4, in <module>
Exception: x should not exceed 5. The value of x was: 10
0 jika Anda memanggilnya di sistem operasi selain Linux

Anda dapat memberikan fungsi

Traceback (most recent call last):
  File "<input>", line 4, in <module>
Exception: x should not exceed 5. The value of x was: 10
_7 menggunakan kode berikut

try:
    linux_interaction()
except:
    pass

Cara Anda menangani kesalahan di sini adalah dengan membagikan

Traceback (most recent call last):
  File "<input>", line 2, in <module>
AssertionError: This code runs on Linux only.
1. Jika Anda menjalankan kode ini di mesin Windows, Anda akan mendapatkan keluaran berikut


Anda tidak mendapatkan apa-apa. Hal baiknya di sini adalah programnya tidak macet. Tapi alangkah baiknya untuk melihat apakah beberapa jenis pengecualian terjadi setiap kali Anda menjalankan kode Anda. Untuk tujuan ini, Anda dapat mengubah

Traceback (most recent call last):
  File "<input>", line 2, in <module>
AssertionError: This code runs on Linux only.
_1 menjadi sesuatu yang akan menghasilkan pesan informatif, seperti itu

try:
    linux_interaction()
except:
    print('Linux function was not executed')

Jalankan kode ini di mesin Windows

>>> print( 0 / 0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
_0

Ketika pengecualian terjadi dalam program yang menjalankan fungsi ini, program akan melanjutkan dan memberi tahu Anda tentang fakta bahwa pemanggilan fungsi tidak berhasil

Apa yang tidak Anda lihat adalah jenis kesalahan yang muncul sebagai akibat dari pemanggilan fungsi. Untuk melihat dengan tepat apa yang salah, Anda perlu menangkap kesalahan yang dilontarkan oleh fungsi tersebut

Kode berikut adalah contoh di mana Anda menangkap

Traceback (most recent call last):
  File "<input>", line 4, in <module>
Exception: x should not exceed 5. The value of x was: 10
0 dan menampilkan pesan itu ke layar

>>> print( 0 / 0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
_1

Menjalankan fungsi ini di mesin Windows akan menghasilkan yang berikut ini

>>> print( 0 / 0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
_2

Pesan pertama adalah

Traceback (most recent call last):
  File "<input>", line 4, in <module>
Exception: x should not exceed 5. The value of x was: 10
0, memberi tahu Anda bahwa fungsi tersebut hanya dapat dijalankan di mesin Linux. Pesan kedua memberi tahu Anda fungsi mana yang tidak dijalankan

Pada contoh sebelumnya, Anda memanggil fungsi yang Anda tulis sendiri. Saat Anda menjalankan fungsi, Anda menangkap pengecualian

Traceback (most recent call last):
  File "<input>", line 4, in <module>
Exception: x should not exceed 5. The value of x was: 10
0 dan mencetaknya ke layar

Berikut contoh lain di mana Anda membuka file dan menggunakan pengecualian bawaan

>>> print( 0 / 0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
_3

Jika file. log tidak ada, blok kode ini akan menampilkan yang berikut

>>> print( 0 / 0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
_4

Ini adalah pesan yang informatif, dan program kami akan terus berjalan. Dalam dokumen Python, Anda dapat melihat bahwa ada banyak pengecualian bawaan yang dapat Anda gunakan di sini. Satu pengecualian yang dijelaskan di halaman itu adalah sebagai berikut

Pengecualian

Traceback (most recent call last):
  File "<input>", line 2, in <module>
AssertionError: This code runs on Linux only.
6

Dibesarkan saat file atau direktori diminta tetapi tidak ada. Sesuai dengan errno ENOENT

Untuk menangkap jenis pengecualian ini dan mencetaknya ke layar, Anda dapat menggunakan kode berikut

>>> print( 0 / 0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
_5

Dalam hal ini, jika file. log tidak ada, hasilnya adalah sebagai berikut

>>> print( 0 / 0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
_6

Anda dapat memiliki lebih dari satu pemanggilan fungsi dalam klausa

Traceback (most recent call last):
  File "<input>", line 4, in <module>
Exception: x should not exceed 5. The value of x was: 10
7 Anda dan mengantisipasi menangkap berbagai pengecualian. Satu hal yang perlu diperhatikan di sini adalah bahwa kode dalam klausa
Traceback (most recent call last):
  File "<input>", line 4, in <module>
Exception: x should not exceed 5. The value of x was: 10
7 akan berhenti segera setelah pengecualian ditemukan

Peringatan. Menangkap

Traceback (most recent call last):
  File "<input>", line 2, in <module>
AssertionError: This code runs on Linux only.
_9 menyembunyikan semua kesalahan… bahkan kesalahan yang sama sekali tidak terduga. Inilah mengapa Anda harus menghindari klausa
Traceback (most recent call last):
  File "<input>", line 4, in <module>
Exception: x should not exceed 5. The value of x was: 10
_8 kosong dalam program Python Anda. Sebagai gantinya, Anda ingin merujuk ke kelas pengecualian tertentu yang ingin Anda tangkap dan tangani. Anda dapat mempelajari lebih lanjut mengapa ini adalah ide yang bagus dalam tutorial ini

Lihatlah kode berikut. Di sini, pertama-tama Anda memanggil fungsi

import sys
assert ('linux' in sys.platform), "This code runs on Linux only."
_7 dan kemudian mencoba membuka file

>>> print( 0 / 0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
_7

Jika file tidak ada, menjalankan kode ini di mesin Windows akan menampilkan berikut ini

>>> print( 0 / 0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
_8

Di dalam klausa

Traceback (most recent call last):
  File "<input>", line 4, in <module>
Exception: x should not exceed 5. The value of x was: 10
_7, Anda langsung menemukan pengecualian dan tidak sampai ke bagian di mana Anda mencoba membuka file. catatan. Sekarang lihat apa yang terjadi ketika Anda menjalankan kode di mesin Linux

>>> print( 0 / 0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
_6

Berikut adalah takeaways kunci

  • Klausa
    Traceback (most recent call last):
      File "<input>", line 4, in <module>
    Exception: x should not exceed 5. The value of x was: 10
    
    _7 dijalankan hingga titik di mana pengecualian pertama ditemukan
  • Di dalam klausa
    Traceback (most recent call last):
      File "<input>", line 4, in <module>
    Exception: x should not exceed 5. The value of x was: 10
    
    _8, atau penangan pengecualian, Anda menentukan bagaimana program merespons pengecualian
  • Anda dapat mengantisipasi banyak pengecualian dan membedakan bagaimana program harus meresponsnya
  • Hindari penggunaan klausa
    Traceback (most recent call last):
      File "<input>", line 4, in <module>
    Exception: x should not exceed 5. The value of x was: 10
    
    8 kosong

Hilangkan iklan

Klausa def linux_interaction(): assert ('linux' in sys.platform), "Function can only run on Linux systems." print('Doing something.') _6

Dalam Python, menggunakan pernyataan

def linux_interaction():
    assert ('linux' in sys.platform), "Function can only run on Linux systems."
    print('Doing something.')
_6, Anda dapat menginstruksikan sebuah program untuk mengeksekusi blok kode tertentu hanya jika tidak ada pengecualian

Python meningkatkan pengecualian dari yang lain

Lihatlah contoh berikut

x = 10
if x > 5:
    raise Exception('x should not exceed 5. The value of x was: {}'.format(x))
0

Jika Anda menjalankan kode ini di sistem Linux, hasilnya adalah sebagai berikut

x = 10
if x > 5:
    raise Exception('x should not exceed 5. The value of x was: {}'.format(x))
1

Karena program tidak mengalami pengecualian apa pun, klausa

def linux_interaction():
    assert ('linux' in sys.platform), "Function can only run on Linux systems."
    print('Doing something.')
6 dijalankan

Anda juga dapat

Traceback (most recent call last):
  File "<input>", line 4, in <module>
Exception: x should not exceed 5. The value of x was: 10
_7 untuk menjalankan kode di dalam klausa
def linux_interaction():
    assert ('linux' in sys.platform), "Function can only run on Linux systems."
    print('Doing something.')
6 dan menangkap kemungkinan pengecualian di sana juga

x = 10
if x > 5:
    raise Exception('x should not exceed 5. The value of x was: {}'.format(x))
2

Jika Anda mengeksekusi kode ini di mesin Linux, Anda akan mendapatkan hasil berikut

x = 10
if x > 5:
    raise Exception('x should not exceed 5. The value of x was: {}'.format(x))
_3

Dari output, Anda dapat melihat bahwa fungsi ________13______7 berjalan. Karena tidak ada pengecualian yang ditemukan, upaya untuk membuka file. log dibuat. File itu tidak ada, dan alih-alih membuka file, Anda menangkap pengecualian

Traceback (most recent call last):
  File "<input>", line 2, in <module>
AssertionError: This code runs on Linux only.
6

Membersihkan Setelah Menggunakan ________32______3

Bayangkan Anda selalu harus menerapkan semacam tindakan untuk membersihkan setelah mengeksekusi kode Anda. Python memungkinkan Anda untuk melakukannya menggunakan klausa ________32______3

Python meningkatkan pengecualian dari yang lain

Lihat contoh berikut

x = 10
if x > 5:
    raise Exception('x should not exceed 5. The value of x was: {}'.format(x))
_4

Dalam kode sebelumnya, semua yang ada di klausa ________32______3 akan dieksekusi. Tidak masalah jika Anda menemukan pengecualian di suatu tempat di klausa

Traceback (most recent call last):
  File "<input>", line 4, in <module>
Exception: x should not exceed 5. The value of x was: 10
7 atau
def linux_interaction():
    assert ('linux' in sys.platform), "Function can only run on Linux systems."
    print('Doing something.')
6. Menjalankan kode sebelumnya pada mesin Windows akan menampilkan berikut ini

x = 10
if x > 5:
    raise Exception('x should not exceed 5. The value of x was: {}'.format(x))
5

Hilangkan iklan

Menyimpulkan

Setelah melihat perbedaan antara kesalahan sintaks dan pengecualian, Anda belajar tentang berbagai cara untuk memunculkan, menangkap, dan menangani pengecualian di Python. Di artikel ini, Anda melihat opsi berikut

  • x = 10
    if x > 5:
        raise Exception('x should not exceed 5. The value of x was: {}'.format(x))
    
    8 memungkinkan Anda untuk melempar pengecualian kapan saja
  • Traceback (most recent call last):
      File "<input>", line 4, in <module>
    Exception: x should not exceed 5. The value of x was: 10
    
    1 memungkinkan Anda untuk memverifikasi jika kondisi tertentu terpenuhi dan mengeluarkan pengecualian jika tidak
  • Dalam klausa
    Traceback (most recent call last):
      File "<input>", line 4, in <module>
    Exception: x should not exceed 5. The value of x was: 10
    
    _7, semua pernyataan dieksekusi sampai pengecualian ditemukan
  • Traceback (most recent call last):
      File "<input>", line 4, in <module>
    Exception: x should not exceed 5. The value of x was: 10
    
    8 digunakan untuk menangkap dan menangani pengecualian yang ditemui dalam klausa try
  • def linux_interaction():
        assert ('linux' in sys.platform), "Function can only run on Linux systems."
        print('Doing something.')
    
    6 memungkinkan Anda membuat kode bagian yang harus dijalankan hanya jika tidak ada pengecualian yang ditemukan dalam klausa try
  • try:
        linux_interaction()
    except:
        pass
    
    _3 memungkinkan Anda mengeksekusi bagian kode yang harus selalu dijalankan, dengan atau tanpa pengecualian yang ditemui sebelumnya

Unduhan PDF gratis. Lembar Curang Python 3

Semoga artikel ini membantu Anda memahami alat dasar yang ditawarkan Python saat menangani pengecualian

Tandai sebagai Selesai

Tonton Sekarang Tutorial ini memiliki kursus video terkait yang dibuat oleh tim Real Python. Tonton bersama dengan tutorial tertulis untuk memperdalam pemahaman Anda. Meningkatkan dan Menangani Pengecualian Python

🐍 Trik Python 💌

Dapatkan Trik Python singkat & manis yang dikirim ke kotak masuk Anda setiap beberapa hari. Tidak pernah ada spam. Berhenti berlangganan kapan saja. Dikuratori oleh tim Real Python

Python meningkatkan pengecualian dari yang lain

Kirimi Saya Trik Python »

Tentang Said van de Klundert

Python meningkatkan pengecualian dari yang lain
Python meningkatkan pengecualian dari yang lain

Said adalah insinyur jaringan, penggemar Python, dan penulis tamu di Real Python

» Lebih lanjut tentang Said


Setiap tutorial di Real Python dibuat oleh tim pengembang sehingga memenuhi standar kualitas tinggi kami. Anggota tim yang mengerjakan tutorial ini adalah

Python meningkatkan pengecualian dari yang lain

Adriana

Python meningkatkan pengecualian dari yang lain

Joanna

Master Keterampilan Python Dunia Nyata Dengan Akses Tanpa Batas ke Python Nyata

Bergabunglah dengan kami dan dapatkan akses ke ribuan tutorial, kursus video langsung, dan komunitas pakar Pythonista

Tingkatkan Keterampilan Python Anda »

Guru Keterampilan Python Dunia Nyata
Dengan Akses Tak Terbatas ke Real Python

Bergabunglah dengan kami dan dapatkan akses ke ribuan tutorial, kursus video langsung, dan komunitas ahli Pythonista

Tingkatkan Keterampilan Python Anda »

Bagaimana menurut anda?

Nilai artikel ini

Tweet Bagikan Bagikan Email

Apa takeaway # 1 Anda atau hal favorit yang Anda pelajari?

Kiat Berkomentar. Komentar yang paling berguna adalah yang ditulis dengan tujuan belajar dari atau membantu siswa lain. dan dapatkan jawaban atas pertanyaan umum di portal dukungan kami

Bagaimana Anda memunculkan pengecualian dari pengecualian lain?

Mari pertimbangkan situasi di mana kami ingin memunculkan pengecualian sebagai tanggapan untuk menangkap pengecualian yang berbeda tetapi ingin menyertakan informasi tentang kedua pengecualian tersebut di traceback. Untuk merangkai pengecualian, gunakan pernyataan kenaikan dari bukan pernyataan kenaikan sederhana . Ini akan memberi Anda informasi tentang kedua kesalahan.

Bagaimana Anda memunculkan dua pengecualian dengan Python?

Dengan menangani beberapa pengecualian, sebuah program dapat merespons pengecualian yang berbeda tanpa menghentikannya. Dalam Python, blok coba-kecuali dapat digunakan untuk menangkap dan merespons satu atau beberapa pengecualian . Dalam kasus di mana suatu proses memunculkan lebih dari satu kemungkinan pengecualian, semuanya dapat ditangani menggunakan satu klausa kecuali.

Apakah mungkin untuk memunculkan kembali pengecualian dengan Python?

Naikkan kembali pengecualian saat ini . Dalam hal ini, Anda dapat menggunakan pernyataan raise tanpa menentukan objek pengecualian . Jika Anda meneruskan nol ke argumen kedua dari fungsi division() , pengecualian ZeroDivisionError akan terjadi.

Apa itu rangkaian pengecualian di Python?

Oleh Ranjeet V. Dalam tutorial ini, kita akan mempelajari cara memunculkan pengecualian sebagai tanggapan atas pengecualian lain dengan Python. Ini juga disebut rangkaian pengecualian. Dalam kode contoh di bawah ini, kami memiliki blok coba-kecuali. Blok try berisi pernyataan dengan ZeroDivisionError.