Cara Menangani Pengecualian dengan Python (Coba-Kecuali-Akhirnya)
Pelajari cara menangani pengecualian dalam Python menggunakan blok coba, kecuali, lain, dan akhirnya. Tulis kode Python yang bebas kesalahan dan tahan crash.
Ikhtisar
Perangkat lunak yang kuat harus siap menangani kondisi yang tidak terduga, seperti file yang hilang, input pengguna yang tidak valid, kegagalan database, atau gangguan jaringan. Ketika kesalahan terjadi pada Python, ini akan memunculkan pengecualian. Jika tidak ditangani, pengecualian akan segera menghentikan program Anda dan mencetak tumpukan penelusuran balik.
Alat utama Python untuk mengelola kesalahan runtime adalah blok `coba-kecuali`. Anda menempatkan kode yang mungkin menimbulkan kesalahan di dalam blok `coba`, dan menentukan kode penanganan kesalahan di dalam satu atau lebih blok `kecuali`. Menentukan kelas pengecualian yang tepat (seperti `ValueError` atau `ZeroDivisionError`) sangat disarankan, karena menangkap semua pengecualian umum (`kecuali:`) dapat menutupi bug.
Untuk membuat aliran pengecualian Anda lebih ekspresif, Python menyediakan dua blok tambahan: `else` dan `finally`. Blok `else` dijalankan hanya jika tidak ada pengecualian yang dimunculkan di blok `try`, yang berguna untuk kode yang hanya berjalan jika berhasil. Blok `finally` dijalankan *selalu*, terlepas dari apakah terjadi pengecualian, menjadikannya tempat sempurna untuk pembersihan seperti menutup file atau koneksi database.
Kode & Output Eksekusi
Skrip ini mendemonstrasikan penanganan kesalahan yang kuat dalam Python menggunakan coba, kecuali, yang lain, dan akhirnya.
def divide_numbers(a, b):
try:
# Code that might raise an exception
result = a / b
except ZeroDivisionError:
# Handling a specific exception
print("Error: Cannot divide by zero!")
except TypeError:
# Handling another exception type
print("Error: Inputs must be numbers!")
else:
# Run only if try block succeeded
print(f"Success! Result of {a}/{b} is {result}")
finally:
# Runs no matter what
print("Division attempt completed.")
divide_numbers(10, 2)
print("---")
divide_numbers(10, 0)Success! Result of 10/2 is 5.0
Division attempt completed.
---
Error: Cannot divide by zero!
Division attempt completed.Implementasi Langkah demi Langkah
- Tempatkan kode yang mungkin gagal di dalam blok coba.
- Tangkap jenis kesalahan tertentu dengan blok kecuali ExceptionType: untuk menangani kegagalan dengan baik.
- Gunakan else untuk kode yang harus dijalankan hanya pada blok percobaan yang berhasil.
- Gunakan akhirnya untuk menjamin tindakan pembersihan berjalan terlepas dari kesalahan.
Pertanyaan yang Sering Diajukan
Bisakah saya menangkap banyak pengecualian dalam satu blok kecuali?
Ya, Anda dapat meneruskannya sebagai Tuple: kecuali (ValueError, TypeError) sebagai e:.
Bagaimana cara saya mengajukan pengecualian saya sendiri?
Gunakan kata kunci raise diikuti dengan contoh pengecualian: raise ValueError("Nilai konfigurasi tidak valid").
Topik Terkait
Pelajari cara mengonversi string menjadi bilangan bulat dengan Python menggunakan fungsi int(). Tangani kesalahan dengan aman dan konversikan angka dari biner, oktal, atau hex.
Cara Membaca File dengan PythonPelajari cara membaca file dengan Python. Kuasai pernyataan terbuka, readline, readline, dan penanganan pengecualian file dengan aman.
Cara Menulis ke File dengan PythonPelajari cara menulis teks ke file dengan Python. Kuasai perbedaan antara mode tulis ("w") dan tambahkan ("a") dengan pengelola konteks yang aman.
Sumber Daya Python yang Direkomendasikan
Perluas pengetahuan Anda dengan tutorial interaktif terkait, lembar contekan, dan perbandingan kode.
Loop Python
Pelajari cara menggunakan loop Python untuk melakukan iterasi pada data. Kuasai perulangan for, perulangan while, hancurkan, lanjutkan, dan ulangi praktik terbaik dengan contoh interaktif.
Lembar
Panduan referensi lengkap untuk manipulasi string Python. Kuasai pemformatan, pencarian, pemisahan, penggantian, dan pemeriksaan properti string.
Python vs JavaScript: Bahasa Pemrograman Mana yang Terbaik?
Perbandingan komprehensif antara Python dan JavaScript. Jelajahi perbedaan sintaksis, kinerja, kasus penggunaan (backend vs frontend), dan contoh pengkodean.