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.

Coba Solusi ini di Editor

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.

handle_errors.py
Coba di Editor
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)
Keluaran Terminal
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

Sumber Daya Python yang Direkomendasikan

Perluas pengetahuan Anda dengan tutorial interaktif terkait, lembar contekan, dan perbandingan kode.