Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Python

Python - Penanganan Pengecualian

Halaman SebelumnyaHalaman Berikutnya

Python menyediakan dua fitur yang sangat penting untuk menangani kesalahan tak terduga dalam program Python Anda dan untuk menambahkan kemampuan debugging di dalamnya

Daftar Pengecualian Standar

No.Sr. Nama &Deskripsi Pengecualian
1

Pengecualian

Kelas dasar untuk semua pengecualian

2

StopIteration

Dibesarkan saat metode next() dari iterator tidak menunjuk ke objek apa pun.

3

Keluar Sistem

Dibesarkan oleh fungsi sys.exit().

4

StandarError

Kelas dasar untuk semua pengecualian bawaan kecuali StopIteration dan SystemExit.

5

Kesalahan Aritmatika

Kelas dasar untuk semua kesalahan yang terjadi untuk perhitungan numerik.

6

Kesalahan Meluap

Dibesarkan saat penghitungan melebihi batas maksimum untuk tipe numerik.

7

FloatingPointError

Dibesarkan saat perhitungan floating point gagal.

8

ZeroDivisionError

Dibesarkan saat pembagian atau modulo dengan nol terjadi untuk semua tipe numerik.

9

Kesalahan Pernyataan

Dibesarkan jika pernyataan Assert gagal.

10

Kesalahan Atribut

Dibesarkan jika terjadi kegagalan referensi atau penugasan atribut.

11

EOFEKesalahan

Dibesarkan saat tidak ada input dari fungsi raw_input() atau input() dan akhir file tercapai.

12

Kesalahan Impor

Dibesarkan saat pernyataan impor gagal.

13

KeyboardInterrupt

Dibesarkan saat pengguna menginterupsi eksekusi program, biasanya dengan menekan Ctrl+c.

14

Kesalahan Pencarian

Kelas dasar untuk semua kesalahan pencarian.

15

Kesalahan Indeks

Dibesarkan saat indeks tidak ditemukan secara berurutan.

16

KeyError

Dibesarkan saat kunci yang ditentukan tidak ditemukan dalam kamus.

17

Kesalahan Nama

Dibesarkan saat pengenal tidak ditemukan di namespace lokal atau global.

18

KesalahanLokal Tidak Terikat

Dibesarkan saat mencoba mengakses variabel lokal dalam suatu fungsi atau metode tetapi tidak ada nilai yang ditetapkan padanya.

19

Kesalahan Lingkungan

Kelas dasar untuk semua pengecualian yang terjadi di luar lingkungan Python.

20

IOError

Dibesarkan saat operasi input/output gagal, seperti pernyataan print atau fungsi open() saat mencoba membuka file yang tidak ada.

21

IOError

Dibesarkan karena kesalahan terkait sistem operasi.

22

Kesalahan Sintaks

Dimunculkan ketika ada kesalahan dalam sintaks Python.

23

Kesalahan Indentasi

Dibesarkan saat lekukan tidak ditentukan dengan benar.

24

Kesalahan Sistem

Dibesarkan ketika interpreter menemukan masalah internal, tetapi ketika kesalahan ini ditemukan, interpreter Python tidak keluar.

25

Keluar Sistem

Dibesarkan saat interpreter Python dihentikan dengan menggunakan fungsi sys.exit(). Jika tidak ditangani dalam kode, menyebabkan juru bahasa keluar.

26

Kesalahan Jenis

Dibesarkan saat operasi atau fungsi dicoba yang tidak valid untuk tipe data yang ditentukan.

27

ValueError

Dibesarkan ketika fungsi bawaan untuk tipe data memiliki tipe argumen yang valid, tetapi argumen tersebut memiliki nilai yang tidak valid yang ditentukan.

28

RuntimeError

Dibesarkan saat kesalahan yang dihasilkan tidak termasuk dalam kategori apa pun.

29

NotImplementedError

Dibesarkan ketika metode abstrak yang perlu diimplementasikan dalam kelas yang diwarisi tidak benar-benar diimplementasikan.

Pernyataan dengan Python

Penegasan adalah pemeriksaan kewarasan yang dapat Anda aktifkan atau nonaktifkan setelah selesai menguji program.

Cara termudah untuk memikirkan sebuah pernyataan adalah dengan menyamakannya dengan raise-if pernyataan (atau lebih tepatnya, pernyataan kenaikan gaji jika tidak). Ekspresi diuji, dan jika hasilnya salah, pengecualian akan muncul.

Asersi dilakukan oleh pernyataan assert, kata kunci terbaru untuk Python, diperkenalkan di versi 1.5.

Pemrogram sering menempatkan pernyataan di awal fungsi untuk memeriksa input yang valid, dan setelah pemanggilan fungsi untuk memeriksa output yang valid.

Pernyataan Pernyataan

Ketika menemukan pernyataan tegas, Python mengevaluasi ekspresi yang menyertainya, yang semoga benar. Jika ekspresinya salah, Python memunculkan AssertionError pengecualian.

Sintaksis untuk menegaskan adalah

assert Expression[, Arguments]

Jika pernyataan gagal, Python menggunakan ArgumentExpression sebagai argumen untuk AssertionError. Pengecualian AssertionError dapat ditangkap dan ditangani seperti pengecualian lainnya menggunakan pernyataan try-except, tetapi jika tidak ditangani, pengecualian tersebut akan menghentikan program dan menghasilkan traceback.

Contoh

Berikut adalah fungsi yang mengubah suhu dari derajat Kelvin ke derajat Fahrenheit. Karena suhu nol derajat Kelvin sedingin itu, fungsi tersebut akan hilang jika melihat suhu negatif

Demo Langsung
#!/usr/bin/python
def KelvinToFahrenheit(Temperature):
   assert (Temperature >= 0),"Colder than absolute zero!"
   return ((Temperature-273)*1.8)+32
print KelvinToFahrenheit(273)
print int(KelvinToFahrenheit(505.78))
print KelvinToFahrenheit(-5)

Ketika kode di atas dijalankan, menghasilkan hasil sebagai berikut

32.0
451
Traceback (most recent call last):
File "test.py", line 9, in <module>
print KelvinToFahrenheit(-5)
File "test.py", line 4, in KelvinToFahrenheit
assert (Temperature >= 0),"Colder than absolute zero!"
AssertionError: Colder than absolute zero!

Apa itu Pengecualian?

Pengecualian adalah peristiwa, yang terjadi selama eksekusi program yang mengganggu aliran normal instruksi program. Secara umum, ketika skrip Python menghadapi situasi yang tidak dapat diatasi, itu menimbulkan pengecualian. Pengecualian adalah objek Python yang mewakili kesalahan.

Saat skrip Python memunculkan pengecualian, skrip tersebut harus segera menangani pengecualian jika tidak, skrip akan berhenti dan berhenti.

Menangani pengecualian

Jika Anda memiliki beberapa mencurigakan kode yang dapat menimbulkan pengecualian, Anda dapat mempertahankan program Anda dengan menempatkan kode yang mencurigakan dalam coba: memblokir. Setelah try:block, sertakan kecuali: pernyataan, diikuti oleh blok kode yang menangani masalah dengan seanggun mungkin.

Sintaks

Berikut adalah sintaks sederhana dari try....except...else blok

try:
   You do your operations here;
   ......................
except ExceptionI:
   If there is ExceptionI, then execute this block.
except ExceptionII:
   If there is ExceptionII, then execute this block.
   ......................
else:
   If there is no exception then execute this block. 

Berikut adalah beberapa poin penting tentang sintaks yang disebutkan di atas −

Contoh

Contoh ini membuka file, menulis konten di file, dan keluar dengan anggun karena tidak ada masalah sama sekali

Demo Langsung
#!/usr/bin/python

try:
   fh = open("testfile", "w")
   fh.write("This is my test file for exception handling!!")
except IOError:
   print "Error: can\'t find file or read data"
else:
   print "Written content in the file successfully"
   fh.close()

Ini menghasilkan hasil berikut

Written content in the file successfully

Contoh

Contoh ini mencoba membuka file di mana Anda tidak memiliki izin menulis, sehingga menimbulkan pengecualian −

Demo Langsung
#!/usr/bin/python

try:
   fh = open("testfile", "r")
   fh.write("This is my test file for exception handling!!")
except IOError:
   print "Error: can\'t find file or read data"
else:
   print "Written content in the file successfully"

Ini menghasilkan hasil berikut

Error: can't find file or read data

kecuali Klausa Tanpa Pengecualian

Anda juga dapat menggunakan pernyataan kecuali tanpa pengecualian yang didefinisikan sebagai berikut −

try:
   You do your operations here;
   ......................
except:
   If there is any exception, then execute this block.
   ......................
else:
   If there is no exception then execute this block. 

Jenis coba-kecuali pernyataan menangkap semua pengecualian yang terjadi. Menggunakan pernyataan try-except semacam ini tidak dianggap sebagai praktik pemrograman yang baik, karena ia menangkap semua pengecualian tetapi tidak membuat programmer mengidentifikasi akar penyebab masalah yang mungkin terjadi.

kecuali Klausa dengan Beberapa Pengecualian

Anda juga dapat menggunakan kecuali yang sama pernyataan untuk menangani beberapa pengecualian sebagai berikut −

try:
   You do your operations here;
   ......................
except(Exception1[, Exception2[,...ExceptionN]]]):
   If there is any exception from the given exception list, 
   then execute this block.
   ......................
else:
   If there is no exception then execute this block. 

Klausa try-finally

Anda dapat menggunakan akhirnya: blokir bersama dengan coba: memblokir. Blok akhirnya adalah tempat untuk meletakkan kode apa pun yang harus dijalankan, baik yang mencoba memblokir pengecualian atau tidak. Sintaks dari pernyataan try-finally adalah ini −

try:
   You do your operations here;
   ......................
   Due to any exception, this may be skipped.
finally:
   This would always be executed.
   ......................

Anda tidak dapat menggunakan lain klausa juga bersama dengan klausa akhirnya.

Contoh

Demo Langsung
#!/usr/bin/python

try:
   fh = open("testfile", "w")
   fh.write("This is my test file for exception handling!!")
finally:
   print "Error: can\'t find file or read data"

Jika Anda tidak memiliki izin untuk membuka file dalam mode penulisan, maka ini akan menghasilkan hasil sebagai berikut

Error: can't find file or read data

Contoh yang sama dapat ditulis lebih jelas sebagai berikut −

Demo Langsung
#!/usr/bin/python

try:
   fh = open("testfile", "w")
   try:
      fh.write("This is my test file for exception handling!!")
   finally:
      print "Going to close the file"
      fh.close()
except IOError:
   print "Error: can\'t find file or read data"

Saat pengecualian dilemparkan ke coba blok, eksekusi segera lolos ke akhirnya memblokir. Setelah semua pernyataan di akhirnya blok dieksekusi, pengecualian dimunculkan kembali dan ditangani di kecuali pernyataan jika ada di lapisan berikutnya yang lebih tinggi dari coba-kecuali pernyataan.

Argumen Pengecualian

Pengecualian dapat memiliki argumen , yang merupakan nilai yang memberikan informasi tambahan tentang masalah. Isi argumen bervariasi berdasarkan pengecualian. Anda menangkap argumen pengecualian dengan menyediakan variabel dalam klausa kecuali sebagai berikut −

try:
   You do your operations here;
   ......................
except ExceptionType, Argument:
   You can print value of Argument here...

Jika Anda menulis kode untuk menangani satu pengecualian, Anda dapat memiliki variabel yang mengikuti nama pengecualian dalam pernyataan exception. Jika Anda menjebak beberapa pengecualian, Anda dapat membuat variabel mengikuti tupel pengecualian.

Variabel ini menerima nilai eksepsi yang sebagian besar berisi penyebab eksepsi. Variabel dapat menerima satu nilai atau beberapa nilai dalam bentuk tupel. Tuple ini biasanya berisi string kesalahan, nomor kesalahan, dan lokasi kesalahan.

Contoh

Berikut ini adalah contoh untuk pengecualian tunggal

Demo Langsung
#!/usr/bin/python

# Define a function here.
def temp_convert(var):
   try:
      return int(var)
   except ValueError, Argument:
      print "The argument does not contain numbers\n", Argument

# Call above function here.
temp_convert("xyz");

Ini menghasilkan hasil berikut

The argument does not contain numbers
invalid literal for int() with base 10: 'xyz'

Meningkatkan Pengecualian

Anda dapat mengajukan pengecualian dalam beberapa cara dengan menggunakan pernyataan kenaikan gaji. Sintaks umum untuk naikkan pernyataannya adalah sebagai berikut.

Sintaks

raise [Exception [, args [, traceback]]]

Di sini, Pengecualian adalah jenis pengecualian (misalnya, NameError) dan argumen adalah nilai untuk argumen pengecualian. Argumen adalah opsional; jika tidak disertakan, argumen pengecualian adalah Tidak Ada.

Argumen terakhir, traceback, juga opsional (dan jarang digunakan dalam praktik), dan jika ada, adalah objek traceback yang digunakan untuk pengecualian.

Contoh

Pengecualian dapat berupa string, kelas, atau objek. Sebagian besar pengecualian yang dimunculkan oleh inti Python adalah kelas, dengan argumen yang merupakan turunan dari kelas. Mendefinisikan pengecualian baru cukup mudah dan dapat dilakukan sebagai berikut −

def functionName( level ):
   if level < 1:
      raise "Invalid level!", level
      # The code below to this would not be executed
      # if we raise the exception

Catatan: Untuk menangkap pengecualian, klausa "kecuali" harus merujuk ke pengecualian yang sama yang dilemparkan baik objek kelas atau string sederhana. Misalnya, untuk menangkap pengecualian di atas, kita harus menulis klausa kecuali sebagai berikut −

try:
   Business Logic here...
except "Invalid level!":
   Exception handling here...
else:
   Rest of the code here...

Pengecualian Buatan Pengguna

Python juga memungkinkan Anda membuat pengecualian sendiri dengan menurunkan kelas dari pengecualian bawaan standar.

Berikut adalah contoh yang terkait dengan RuntimeError . Di sini, sebuah kelas dibuat yang merupakan subkelas dari RuntimeError . Ini berguna saat Anda perlu menampilkan informasi yang lebih spesifik saat ada pengecualian.

Di blok coba, pengecualian yang ditentukan pengguna dimunculkan dan ditangkap di blok kecuali. Variabel e digunakan untuk membuat turunan dari kelas Networkerror .

class Networkerror(RuntimeError):
   def __init__(self, arg):
      self.args = arg

Jadi setelah Anda mendefinisikan kelas di atas, Anda dapat memunculkan pengecualian sebagai berikut −

try:
   raise Networkerror("Bad hostname")
except Networkerror,e:
   print e.args

Python

  1. Tipe Data Python
  2. Operator Python
  3. Pernyataan lulus python
  4. Argumen Fungsi Python
  5. Kamus Python
  6. Kesalahan Python dan Pengecualian Bawaan
  7. Penanganan Pengecualian Python Menggunakan pernyataan coba, kecuali dan akhirnya
  8. Pengecualian Kustom Python
  9. Python Iterator
  10. Penutupan Python