Python memiliki indikator kondisi error dan pengecualian dengan menggunakan exception, tetapi ada beberapa pihak ketiga dari library python yang menggunakan cara lama dengan mengembalikan nilai 'error' saja.
Exception digunakan dengan menggunakan block 'try... except', yang bisanya menggunakan syntax:
- try :
- perintah1
- except exception1 as variable1 :
- perintah2
- except exception2 as variable2 :
- perintah3
- else:
- perintah4
- finally:
- perintah5
Harus ada setidaknya satu (1) except block, perintah 'else' dan 'finally' adalah pilihan.
Blok 'else' bila pada blok try terjadi normal (tidak ada error).
Blok 'finally' akan selalu dieksekusi.
Bila exception terjadi di blok 'try', semua blok except akan dicoba, bila exception cocok pada salah satu blok except, maka blok tersebut akan dieksekusi. Agar dapat cocok dengan exception, exception harus menggunakan type yang sama dari list exception dari group atau subclass.
Untuk Program yang tidak mengalami masalah, gambaranya adalah:
Untuk Program yang terjebak Handled Exception:
Dan Program yang terjebak error tanpa Handled Exception:
Error standar yang saya maksud disini adalah dari program terhenti sementara sampai program crash, tapi blok finally akan dieksekusi.
Bila ingin lebih jelas soal exception bisa dibaca disini atau https://docs.python.org/3.4/library/exceptions.html
Untuk Program yang terjebak Handled Exception:
Dan Program yang terjebak error tanpa Handled Exception:
Error standar yang saya maksud disini adalah dari program terhenti sementara sampai program crash, tapi blok finally akan dieksekusi.
Bila ingin lebih jelas soal exception bisa dibaca disini atau https://docs.python.org/3.4/library/exceptions.html
Turunan dari exception yang lebih detail:
BaseException
1-- SystemExit
2-- KeyboardInterrupt (Ketika user menekan keyboard (biasanya Ctlr+C))
3-- GeneratorExit (Ketika metode close() dipanggil)
4-- Exception (Semua error yang bukan system)
1-- StopIteration (Ketika next() dan iterator_next_() tidak menemukan yang berikutnya)
2-- ArithmeticError (Kesalahan pada aritmatik)
1-- FloatingPointError (Ketika operasi pada float gagal)
2-- OverflowError (Ketika operasi aritmatik terlalu besar)
3-- ZeroDivisionError
3-- AssertionError (Ketika assert gagal)
4-- AttributeError (Ketika atribut reference gagal)
5-- BufferError (Buffer tidak dapat dijalankan)
6-- EOFError (Ketika fungsi input sampai diakhir tidak ada data, end-of-file (EOF))
7-- ImportError (Ketika statement import gagal)
8-- LookupError (Ketika kunci atau index tidak valid)
1-- IndexError (Ketika index diluar jangkauan)
2-- KeyError (Ketika mapping key tidak ditemukan)
9-- MemoryError (Ketika nama local atau global tidak ditemukan)
10- NameError
1-- UnboundLocalError
11- OSError (Ketika system tidak bekerja, misalnya 'file not found')
1-- BlockingIOError
2-- ChildProcessError
3-- ConnectionError
1-- BrokenPipeError
2-- ConnectionAbortedError
3-- ConnectionRefusedError
4-- ConnectionResetError
4-- FileExistsError
5-- FileNotFoundError
6-- InterruptedError
7-- IsADirectoryError
8-- NotADirectoryError
9-- PermissionError
10- ProcessLookupError
11- TimeoutError
12- ReferenceError (Ketika reference proxy lemah)
13- RuntimeError (error terdeteksi tapi tidak menggangu yang lainnya)
1-- NotImplementedError (Ketika runtime Error, memerlukan methode override)
14- SyntaxError (Kesalahan syntax)
1-- IndentationError
1-- TabError
15- SystemError
16- TypeError
17- ValueError
1-- UnicodeError
1-- UnicodeDecodeError
2-- UnicodeEncodeError
3-- UnicodeTranslateError
18- Warning
1-- DeprecationWarning
2-- PendingDeprecationWarning
3-- RuntimeWarning
4-- SyntaxWarning
5-- UserWarning
6-- FutureWarning
7-- ImportWarning
8-- UnicodeWarning
9-- BytesWarning
10- ResourceWarning
Exception menyediakan cara untuk mengubah flow control dari program, kita dapat mengambil keuntungan dari itu, dengan menggunakan build-in exception atau kita dapat menbuat yang baru, dengan 'raise'.
Ada tiga syntax yang dapat kita gunakan:
- raise exception(args)
- raise exception(args) from exception_asli
- raise
Yang pertama digunakan dengan salah satu dari build-in exception, bila kita memberikan sebuah kalimat sebagai argument, maka text tersebut menjadi output bila exception terjadi.
Yang kedua adalah variasi dari yang pertama, yaitu exception berantai yang termasuk exception yang aslinya
Dan yang ketiga adalah exception yang tidak specifik, 'raise' akan memunculkan exception saat aktif, dan ketika tidak ada maka akan muncul typeError.
No comments:
Post a Comment