Python
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
Penanganan Pengecualian Ini akan dibahas dalam tutorial ini. Berikut adalah daftar Pengecualian standar yang tersedia di Python:Pengecualian Standar.
Pernyataan Ini akan dibahas dalam tutorial Assertions in Python.
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. |
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.
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.
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!
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.
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.
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 −
Sebuah pernyataan try tunggal dapat memiliki beberapa pernyataan kecuali. Ini berguna ketika blok try berisi pernyataan yang mungkin memunculkan berbagai jenis pengecualian.
Anda juga dapat memberikan klausa kecuali generik, yang menangani pengecualian apa pun.
Setelah klausa kecuali, Anda dapat menyertakan klausa lain. Kode di blok else dijalankan jika kode di blok try:tidak memunculkan eksepsi.
Blok-lain adalah tempat yang baik untuk kode yang tidak perlu dicoba:perlindungan blok.
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 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
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.
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.
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.
#!/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.
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.
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'
Anda dapat mengajukan pengecualian dalam beberapa cara dengan menggunakan pernyataan kenaikan gaji. Sintaks umum untuk naikkan pernyataannya adalah sebagai berikut.
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.
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...
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
Penanganan File Python Di Python, tidak perlu mengimpor perpustakaan eksternal untuk membaca dan menulis file. Python menyediakan fungsi bawaan untuk membuat, menulis, dan membaca file. Dalam tutorial penanganan file dengan Python ini, kita akan belajar: Cara Membuka File Teks dengan Python Cara
Saya melihat banyak orang menangani pengecualian dengan cara yang salah. Mungkin ini juga berlaku untuk Anda. Apakah situasi berikut terdengar familiar? Anda sedang menulis beberapa kode, tetapi Anda tahu bahwa perpustakaan yang Anda gunakan mungkin menimbulkan pengecualian. Anda tidak ingat yang m
Jika perusahaan Anda memproduksi, mengangkut, atau menangani lembaran logam, Anda harus mengambil tindakan pencegahan tambahan untuk memastikan keselamatan karyawan Anda . Beberapa perusahaan benar-benar mengabaikan lembaran logam sebagai potensi bahaya di tempat kerja, membuat karyawan rentan terha
Penanganan material robot didefinisikan sebagai pergerakan, pengemasan, atau penyimpanan material dengan cara yang menghemat waktu, ruang, dan uang. Saat siap untuk mengotomatisasi aplikasi penanganan material, kami sarankan Anda mempertimbangkan semua faktor yang diperlukan untuk menyusun sistem ro