Panduan Penanganan Pengecualian Python – beragampengetahuan

 – Beragampengetahuan
8 mins read

Panduan Penanganan Pengecualian Python – beragampengetahuan – Beragampengetahuan

Pada artikel ini, kita akan melihat bagaimana kesalahan dan pengecualian ditangani dengan Python — sebuah konsep yang disebut “penanganan pengecualian.”

Saat memprogram dengan Python, Anda biasanya menemukan dua jenis kesalahan: kesalahan sintaksis dan pengecualian.

Kesalahan apa pun yang dihasilkan dari sintaks, lekukan, atau struktur pemrograman yang tidak valid umumnya dipertimbangkan Kesalahan tata bahasaKetika kesalahan sintaks terjadi, program macet di mana kesalahan sintaks terjadi.

satu pengecualian Anomali yang mengganggu aliran normal program komputer. Ketika terjadi exception, kita harus menangani exception ini untuk memastikan program kita tidak crash secara tiba-tiba.

penanganan pengecualian Adalah proses pelaksanaan pemeriksaan pada program komputer untuk mengatasi kesalahan (baik yang diharapkan atau tidak) yang mungkin terjadi selama pelaksanaan program kita. (Python menyukai gaya pemrograman “lakukan dan minta maaf” lebih dari kebanyakan bahasa lain, seperti yang dijelaskan di sini dan di sini.)

Contents

penanganan pengecualian

Seperti setiap bahasa pemrograman lainnya, Python memiliki cara menangani pengecualian yang terjadi selama eksekusi program. Ini berarti pengecualian ditangani dengan baik: program Python kami tidak mogok.Ketika program yang benar secara sintaks gagal saat runtime, Python menggunakan try pernyataan dan except Klausa untuk menangkap dan menangani pengecualian.

Karena sebagian besar pengecualian diharapkan, masuk akal untuk memiliki penanganan pengecualian yang lebih bertarget atau spesifik dalam program Python kami. Penanganan eksepsi khusus membuat proses debug program lebih mudah.

Beberapa pengecualian Python standar

Python memiliki daftar pengecualian bawaan untuk menangani berbagai pengecualian. Di bawah ini adalah beberapa pengecualian Python bawaan.

nomor seri nama pengecualian menggambarkan
1 Exception Semua pengecualian yang ditentukan pengguna juga harus berasal dari kelas ini.
2 ArithmeticError Kelas dasar untuk pengecualian bawaan yang dimunculkan untuk berbagai kesalahan aritmatika.
3 BufferError Dibesarkan ketika operasi terkait buffer tidak dapat dilakukan.
4 LookupError Kelas dasar untuk pengecualian muncul saat kunci atau indeks untuk peta atau urutan tidak valid.
5 AssertionError Dibesarkan ketika pernyataan penegasan gagal.
6 AttributeError Dibesarkan saat referensi atau penugasan properti gagal.
7 ImportError Dibesarkan saat pernyataan impor mengalami masalah saat mencoba memuat modul.
8 IndexError Dibesarkan saat subskrip urutan berada di luar jangkauan.
9 KeyError Dibesarkan ketika kunci peta (kamus) tidak dapat ditemukan di kumpulan kunci yang ada.
10 NameError Dibesarkan ketika nama lokal atau global tidak dapat ditemukan.
11 OverflowError Dibesarkan saat hasil operasi aritmatika terlalu besar untuk direpresentasikan.
12 RuntimeError Dibesarkan saat kesalahan yang tidak termasuk dalam kategori lain terdeteksi.
13 StopIteration Dibesarkan oleh fungsi bawaan next() dan iterator __next__() Metode untuk menunjukkan bahwa iterator tidak memiliki item lagi.
14 SyntaxError Dibesarkan saat parser menemukan kesalahan sintaksis.
15 TypeError Dibesarkan saat operasi atau fungsi diterapkan ke objek dengan tipe yang tidak sesuai.
16 ValueError Dibesarkan saat operasi atau fungsi menerima argumen dengan tipe yang benar tetapi nilai yang tidak sesuai.
17 ZeroDivisionError Dibesarkan ketika argumen kedua untuk operasi divisi atau modulo adalah nol.
18 FileExistsError Dimunculkan saat upaya dilakukan untuk membuat file atau direktori yang sudah ada.
19 FileNotFoundError Dibesarkan ketika file atau direktori diminta tetapi tidak ada.

Tangani pengecualian Python dengan pernyataan coba dan kecuali

ini try Dan except Blok digunakan untuk penanganan pengecualian di Python. Sintaksnya adalah sebagai berikut:

try:
    
except: 
    

ini try blok berisi sepotong kode yang dapat memunculkan pengecualian, sementara except blok berisi beberapa kode yang menangani pengecualian.

Berikut kami berikan contoh sederhana:

print(3/0)

Kode di atas akan menghasilkan pesan kesalahan saat program berakhir:

Traceback (most recent call last):
  File "/home/ini/Dev/Tutorial/beragampengetahuan/exception.py", line 53, in <module>
    print(3/0)
ZeroDivisionError: division by zero

Baris kode yang melempar pengecualian dapat ditangani seperti ini:

try:
    print(3/0)
except ZeroDivisionError:
    print("Cannot divide number by Zero")

Dalam contoh di atas, kami menempatkan pernyataan cetak pertama di try buntu. Cuplikan kode di blok ini akan mengeluarkan pengecualian karena membagi angka dengan nol tidak masuk akal.ini except blok akan ditangkap try buntu.ini try Dan except Blok sering digunakan bersama untuk menangani pengecualian di Python. Alih-alih pesan kesalahan yang dibuat sebelumnya, kami hanya mencetak “Tidak dapat membagi angka dengan Nol” ke konsol.

Beberapa pengecualian Python

Ada dua atau lebih kasus except Blok digunakan untuk menangkap berbagai pengecualian di Python. Beberapa kecuali blok membantu kami menangkap pengecualian tertentu dan menanganinya secara berbeda dalam program kami:

try:
    number = 'one'
    print(number + 1)
    print(block)
except NameError:
    print("Name is undefined here")
except TypeError:
    print("Can't concatenate string and int")

Berikut adalah output dari kode di atas:

Can't concatenate string and int

Dari contoh di atas, kita memiliki dua except Blok yang menentukan jenis pengecualian yang ingin kami tangani: NameError Dan TypeErrorPernyataan cetak pertama dalam file . try lemparan balok a TypeError pengecualian. Penerjemah Python memeriksa masing-masing except klausa menemukan kelas pengecualian yang sesuai, yang ditangani oleh yang kedua except buntu. “Tidak dapat menggabungkan string dan bilangan bulat” dicetak di konsol.

Pernyataan cetak kedua di try Pemblokiran dilewati karena terjadi pengecualian.Namun, kode apa pun setelah yang terakhir except Persyaratan akan diberlakukan:

try:
    number = 'one'
    print(number + 1)
    print(block)
except NameError:
    print("Name is undefined here")
except TypeError:
    print("Can't concatenate string and int")

for name in ['Chris', 'Kwame', 'Adwoa', 'Bolaji']:
    print(name, end=" ")

Berikut adalah output dari kode di atas:

Can't concatenate string and int
Chris Kwame Adwoa Bolaji

ini for lingkaran setelah try Dan except blok dieksekusi karena pengecualian ditangani.

Tambahan Python tujuan umum untuk

Kita dapat memiliki generik except blok untuk menangkap semua pengecualian dengan Python.umum except Blok dapat digunakan dengan spesifik lainnya except blokir dalam program kami untuk menangkap pengecualian yang tidak tertangani.Adalah logis untuk menempatkan yang paling umum except Lagi pula, istilahnya spesifik except bagian. Ini akan muncul ketika pengecualian yang tidak tertangani terjadi.Mari ubah contoh kita sebelumnya dengan cara yang umum except Blok terakhir:

names = ['Chris', 'Kwame', 'Adwoa', 'Bolaji']
try:
    print(names[6])
    number = 'one'
    print(number + 1)
    print(block)
except NameError:
    print("Name is undefined here")
except TypeError:
    print("Can't concatenate string and int")
except:
    print('Sorry an error occured somewhere!')

for name in names:
    print(name, end=" ")

Berikut adalah output dari kode di atas:

Sorry an error occured somewhere!
Chris Kwame Adwoa Bolaji

satu IndexError Namun, pengecualian terjadi karena tidak ditentukan di salah satu except bagian.umum except blok menangani pengecualian.Pernyataan di blok umum dieksekusi dan for Ulangi setelah itu juga dijalankan, dan cetak keluaran yang sesuai di konsol.

pernyataan kenaikan gaji

Terkadang dalam program Python kami, kami mungkin ingin menggunakannya raise Kata kunci.ini raise Pernyataan terdiri dari kata kunci itu sendiri, contoh pengecualian, dan parameter opsional. Mari kita lihat cuplikan kode berikut:

def validate_password(password):
    if len(password) < 8:
        raise ValueError("Password characters less than 8")
    return password

try:
    user_password = input('Enter a password: ')
    validate_password(user_password)
except ValueError:
    print('Password should have more characters')

ini raise ValueError Memeriksa apakah kata sandi memenuhi panjang yang diperlukan, dan memunculkan pengecualian yang ditentukan jika kondisinya tidak terpenuhi. Stack OverFlow memeriksa mengapa pengecualian dapat dimunculkan alih-alih hanya dicetak ke konsol:

Melemparkan kesalahan menghentikan seluruh program pada saat itu (kecuali pengecualian tertangkap), saat mencetak pesan, tulis saja sesuatu ke stdout — hasilnya mungkin disalurkan ke alat lain, atau seseorang mungkin tidak menjalankan aplikasi Anda dari baris perintah dan mungkin tidak pernah melihat cetakannya.

Menimbulkan pengecualian, mendelegasikan penanganan kondisi tersebut ke sesuatu yang lebih tinggi di tumpukan panggilan.

klausa lain

ini else Klausul dapat ditambahkan ke standar try Dan except bagian.itu ditempatkan di except ketentuan.ini else klausa berisi kode yang ingin kita jalankan jika try pernyataan tidak melempar pengecualian. Mari pertimbangkan kode berikut:

try:
    number = int(input('Enter a number: '))
    if number % 2 != 0:
        raise ValueError
except ValueError:
    print("Number must be even")
else:
    square = number ** 2
    print(square)

Kode kami berjalan tanpa memunculkan pengecualian saat pengguna memasukkan angka genap.Kemudian else Persyaratan diberlakukan. Kami sekarang mencetak kotak genap ke konsol.Namun, pengecualian dapat terjadi di else klausa tidak diproses oleh sebelumnya except bagian.

akhirnya klausa

ini finally Klausa dapat ditambahkan ke try Dan except blok dan harus digunakan bila diperlukan.kode masuk finally Klausa selalu dieksekusi apakah pengecualian terjadi atau tidak. Lihat cuplikan kode di bawah ini:

try:
    with open('robots.txt', 'r', encoding='UTF-8') as f:
        first_line = f.readline()
except IOError: 
    print('File not found!')
else:
    upper_case = first_line.upper()
    print(upper_case.index('x'))
finally:
    print('The Python program ends here!')

Berikut adalah output dari kode di atas:

The Python program ends here!
Traceback (most recent call last):
  File "/home/ini/Dev/python/python_projects/extra.py", line 89, in <module>
    print(upper_case.index('x'))
ValueError: substring not found

Pada contoh di atas, kita mencoba membaca a robots.txt mengajukan try ketentuan.Karena tidak ada pengecualian yang dilemparkan, maka else Ketentuan ditegakkan.ada else klausa karena substring x tidak ditemukan dalam variabel upper_caseKetika tidak ada klausa kecuali untuk menangani pengecualian – seperti yang ditunjukkan pada cuplikan kode di atas – finally klausa dieksekusi terlebih dahulu, setelah itu pengecualian dimunculkan kembali.

Dokumen Python menjelaskannya seperti ini:

Pengecualian dapat terjadi selama eksekusi except atau else ketentuan.Demikian juga di finally Ketentuan telah diberlakukan.

kelompok pengecualian

ExceptionGroup Tersedia dalam Python 3.11. Ini menyediakan cara untuk meningkatkan beberapa pengecualian yang tidak terkait.Sintaks yang disukai untuk diproses ExceptionGroup Ya except*Sintaks untuk grup pengecualian adalah sebagai berikut:

ExceptionGroup(msg, excs)

Saat diinisialisasi, grup pengecualian memiliki dua parameter, msg Dan excs:

  • msg: informasi deskriptif
  • excs: urutan subgrup outlier

Mari kita buat sebuah instance ExceptionGroup:

eg = ExceptionGroup('group one', [NameError("name not defined"), TypeError("type mismatch")])

Saat membuat instance grup pengecualian, daftar subgrup pengecualian tidak boleh kosong. Kami akan memunculkan instance dari grup pengecualian yang kami buat sebelumnya:

raise eg

Berikut adalah output dari kode di atas:

+ Exception Group Traceback (most recent call last):
|   File "<string>", line 10, in <module>
  | ExceptionGroup: group one (2 sub-exceptions)
  +-+---------------- 1 ----------------
    | NameError: name not defined
    +---------------- 2 ----------------
    | TypeError: type mismatch
    +------------------------------------

Backtrace yang ditampilkan menampilkan semua subgrup pengecualian yang terdapat dalam grup pengecualian.

Seperti disebutkan sebelumnya, ExceptionGroup pegangan yang lebih baik except* klausa karena memilih setiap pengecualian khusus dalam grup pengecualian.umum except klausa hanya akan memperlakukan kelompok pengecualian sebagai satu kesatuan, bukan secara konkret.

Lihat cuplikan kode di bawah ini:

try:
    raise ExceptionGroup('exception group', [NameError("name not defined"), TypeError("type mismatch"), ValueError("invalid input")])
except* NameError as e:
    print("NameError handled here.")
except* TypeError as e:
    print("TypeError handled here.")
except* ValueError:
    print("ValueError handled here.")

Inilah output dari kode itu:

NameError handled here.
TypeError handled here.
ValueError handled here.

setiap except* klausa memproses subgrup pengecualian target dalam grup pengecualian. Setiap subgrup yang tidak tertangani akan memunculkan kembali pengecualian.

Pengecualian yang ditentukan pengguna dengan Python

Pengecualian bawaan baik-baik saja, tetapi proyek perangkat lunak kami mungkin memerlukan pengecualian khusus. Python memungkinkan kita untuk membuat pengecualian yang ditentukan pengguna sesuai dengan kebutuhan kita. Dokumen Python menyatakan:

Semua pengecualian harus merupakan instance dari kelas yang diturunkan BaseException.

Pengecualian khusus diwarisi dari Python Exception kelas. Sintaks untuk pengecualian khusus adalah sebagai berikut:

class CustomExceptionName(Exception):
    pass
try:
    pass
except CustomExceptionName:
    pass

Mari buat pengecualian khusus dan gunakan dalam kode contoh berikut:

class GreaterThanTenError(Exception):
    pass

try:
    number = int(input("Enter a number: "))
    if number > 10:
        raise GreaterThanTenError
except GreaterThanTenError:
    print("Input greater than 10")
else:
    for i in range(number):
        print(i ** 2, end=" ")
finally:
    print()
    print("The Python program ends here")

Pada contoh di atas kita membuat kelas kita sendiri dengan nama pengecualian sebagai GreaterThanTenExceptionitu mewarisi dari Exception kelas super.tempat kami meletakkan beberapa kode yang mungkin memunculkan pengecualian try buntu.ini except blok adalah penangan pengecualian kami.ini else Klausa memiliki kode untuk dieksekusi jika tidak ada pengecualian yang dilemparkan. akhirnya, finally Klausa dijalankan terlepas dari hasilnya.

Jika pengguna program Python kami memasukkan angka lebih besar dari 10, a GreaterThanTenError akan dibangkitkan.ini except klausa akan menangani pengecualian, diikuti oleh pernyataan cetak di finally Ketentuan ditegakkan.

Kesimpulannya

Dalam tutorial ini, kita mempelajari perbedaan utama antara kesalahan sintaksis dan pengecualian. Kami juga melihat bahwa kesalahan atau pengecualian sintaks dapat mengganggu aliran normal program kami.

Kami juga belajar try Dan except pernyataan adalah sintaks standar untuk menangani pengecualian di Python.

Penanganan pengecualian penting saat membangun aplikasi nyata karena Anda ingin mendeteksi kesalahan dan menanganinya dengan tepat. Python menyediakan daftar panjang pengecualian bawaan yang sangat berguna saat menangani pengecualian.

rencana pengembangan website



metode pengembangan website

jelaskan beberapa rencana untuk pengembangan website, proses pengembangan website, kekuatan dan kelemahan bisnis pengembangan website
, jasa pengembangan website, tahap pengembangan website, biaya pengembangan website

#Panduan #Penanganan #Pengecualian #Python #beragampengetahuan

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *