Python - Pengecualian Bawaan

Halo, para pemrogram berbakat! Hari ini, kita akan menyelam ke dalam dunia yang menarik tentang pengecualian bawaan Python. Jangan khawatir jika Anda baru mengenal pemrograman; saya akan memandu Anda melalui topik ini langkah demi langkah, sama seperti yang saya lakukan untuk banyak mahasiswa selama tahun-tahun pengajaran saya. Mari kita mulai perjalanan yang menyegarkan ini bersama-sama!

Python - Built-in Exceptions

Pengecualian Bawaan Standar di Python

Bayangkan Anda sedang memasak di dapur, dan tiba-tiba Anda menyadari bahwa Anda kehabisan bahan penting. Itu mirip dengan apa yang terjadi dalam pemrograman ketika terjadi pengecualian - sesuatu yang tidak diharapkan yang mengganggu aliran normal kode Anda. Python memiliki berbagai jenis pengecualian bawaan untuk menangani jenis-jenis error yang berbeda.

Mari kita lihat beberapa dari pengecualian bawaan yang paling umum:

  1. SyntaxError: Ini seperti lupa untuk menempatkan tanda titik di akhir kalimat. Python menghasilkan ini ketika menemui sintaks yang salah.
print "Hello, World!"  # SyntaxError: Missing parentheses in call to 'print'

Pada contoh ini, kita lupa untuk menambahkan tanda kurung di sekitar string di fungsi print, yang diperlukan dalam Python 3.

  1. NameError: Ini terjadi ketika Anda mencoba menggunakan variabel yang belum didefinisikan.
print(x)  # NameError: name 'x' is not defined

Disini, kita mencoba mencetak variabel 'x' yang belum kita buat atau mengasignasikan nilai kepadanya.

  1. TypeError: Ini terjadi ketika operasi dilakukan pada jenis yang tidak sesuai.
"2" + 2  # TypeError: can only concatenate str (not "int") to str

Pada kasus ini, kita mencoba untuk menambahkan string ("2") ke bilangan bulat (2), yang Python tidak tahu harus melakukan.

  1. ValueError: Ini dihasilkan ketika fungsi menerima argumen dengan jenis yang benar tetapi nilai yang tidak sesuai.
int("hello")  # ValueError: invalid literal for int() with base 10: 'hello'

Fungsi int() mengharapkan string yang mewakili angka, bukan kata.

  1. ZeroDivisionError: Ini terjadi ketika Anda mencoba untuk membagi dengan nol.
10 / 0  # ZeroDivisionError: division by zero

Sama seperti dalam matematika, pembagian dengan nol adalah tak ditentukan dalam pemrograman.

Hierarki Pengecualian Bawaan

Pengecualian bawaan Python diorganisir dalam hierarki, seperti pohon keluarga. Di puncak pohon ini adalah kelas BaseException, dari mana semua pengecualian lain mengwarisi.

Berikut adalah versi sederhana dari hierarki pengecualian:

Hierarki Pengecualian
BaseException
├── SystemExit
├── KeyboardInterrupt
├── GeneratorExit
└── Exception
├── StopIteration
├── ArithmeticError
│ ├── FloatingPointError
│ ├── OverflowError
│ └── ZeroDivisionError
├── AssertionError
├── AttributeError
├── BufferError
├── EOFError
├── ImportError
│ └── ModuleNotFoundError
├── LookupError
│ ├── IndexError
│ └── KeyError
├── MemoryError
├── NameError
│ └── UnboundLocalError
├── OSError
│ ├── FileExistsError
│ ├── FileNotFoundError
│ ├── PermissionError
│ └── TimeoutError
├── ReferenceError
├── RuntimeError
│ └── NotImplementedError
├── SyntaxError
│ └── IndentationError
│ └── TabError
├── SystemError
├── TypeError
├── ValueError
│ └── UnicodeError
└── Warning

Mengerti hierarki ini dapat membantu Anda menangkap dan menangani pengecualian lebih efektif dalam kode Anda.

Cara Menggunakan Pengecualian Bawaan

Sekarang bahwa kita tahu apa itu pengecualian, mari kita pelajari cara menggunakannya dalam kode kita. Cara utama untuk menangani pengecualian adalah dengan menggunakan blok try-except. Itu seperti memiliki rakit penyelam ketika Anda belajar untuk bersepeda - jika Anda jatuh (menemui pengecualian), rakit penyelam (blok except) menangkap Anda.

Berikut adalah struktur dasar:

try:
# Kode yang mungkin menghasilkan pengecualian
result = 10 / 0
except ZeroDivisionError:
# Kode untuk menangani pengecualian spesifik
print("Ups! Anda tidak bisa membagi dengan nol.")

Pada contoh ini, kita mencoba untuk membagi dengan nol, yang kita tahu akan menghasilkan ZeroDivisionError. Blok except menangkap error spesifik ini dan mencetak pesan yang ramah daripada membuat program kres atau krah.

Anda juga dapat menangkap beberapa pengecualian:

try:
# Kode yang mungkin menghasilkan pengecualian yang berbeda
number = int(input("Masukkan angka: "))
result = 10 / number
except ValueError:
print("Itu bukan angka yang valid!")
except ZeroDivisionError:
print("Anda tidak bisa membagi dengan nol!")
except:
print("Ada yang salah lainnya.")

Skrip ini menangani berbagai skenario: jika pengguna memasukkan nilai non-angka (ValueError), mencoba membagi dengan nol (ZeroDivisionError), atau jika terjadi error yang tidak diharapkan lainnya.

Menghasilkan Pengecualian Bawaan Secara Eksplisit

Terkadang, Anda mungkin ingin menghasilkan pengecualian sendiri. Itu seperti menjadi wasit dalam pertandingan - ketika Anda melihat sesuatu yang tidak benar, Anda吹angklung dan menghentikan pertandingan.

Berikut cara Anda dapat menghasilkan pengecualian:

def cek_usia(usia):
if usia < 0:
raise ValueError("Usia tidak boleh negatif!")
elif usia < 18:
print("Anda masih_anak.")
else:
print("Anda sudah dewasa.")

try:
cek_usia(-5)
except ValueError as e:
print(e)

Pada contoh ini, kita membuat fungsi yang memeriksa usia seseorang. Jika seseorang mencoba untuk memasukkan usia negatif, kita menghasilkan ValueError dengan pesan khusus. Blok try-except di luar fungsi menangkap pengecualian ini dan mencetak pesan error.

Ingat, menghasilkan pengecualian harus dilakukan dengan bijak. Itu adalah alat yang kuat, tetapi penggunaannya berlebihan dapat membuat kode Anda lebih sulit untuk dipahami dan dipelihara.

Dalam kesimpulan, mengerti dan menggunakan secara efektif pengecualian bawaan Python adalah penting untuk menulis kode yang kuat dan tahan terhadap error. Itu seperti belajar untuk menavigasi laut - mengenal potensi badai (pengecualian) dan cara menanganinya akan membuat perjalanan pemrograman Anda jauh lebih halus dan menyenangkan.

Tetap berlatih, tetap curious, dan jangan takut menemui pengecualian - mereka adalah kesempatan untuk belajar dan meningkatkan kode Anda!

Credits: Image by storyset