Penanganan Kesalahan dalam Python

Penanganan Kesalahan dalam Python

Dalam artikel ini, kami akan menjelaskan penanganan kesalahan dalam Python.

YouTube Video

Penanganan Kesalahan dalam Python

Penanganan kesalahan dalam Python terutama dilakukan dengan menggunakan kata kunci try, except, else, dan finally. Dengan menggunakan konstruksi ini, Anda dapat merespons dengan tepat ketika terjadi kesalahan dalam program Anda. Di bawah ini, kami akan menjelaskan cara menggunakan masing-masing.

Blok try

Di dalam blok try, Anda menulis kode yang ingin dijalankan. Jika terjadi kesalahan dalam blok ini, eksekusi program segera beralih ke blok except.

 1try:
 2    # Code that may raise an error (division by zero, for example)
 3    #number = int(input("Enter a number: "))
 4    number = int("abc")
 5    result = 10 / number
 6    print("Result:", result)
 7except ValueError as e:
 8    # Handle invalid input (e.g. non-numeric input)
 9    print("Invalid input. Please enter a whole number.")
10    print(f"Value error: {e}")
11except ZeroDivisionError as e:
12    # Handle division by zero error
13    print("Cannot divide by zero!")
14    print(f"Zero division error: {e}")
  • Kode ini adalah contoh mendeteksi kesalahan di dalam blok try dan menanganinya dengan tepat dengan menangkap baik ValueError maupun ZeroDivisionError.

Blok except

Di blok except, Anda menulis kode yang akan dijalankan ketika terjadi pengecualian (kesalahan) tertentu. Anda juga dapat menangkap pengecualian tertentu tergantung pada jenis pengecualian yang terjadi.

 1try:
 2    #number = int(input("Enter a number: "))
 3    number = 0
 4    result = 10 / number
 5    print("Result:", result)
 6except ZeroDivisionError as e:
 7    print("Cannot divide by zero!")
 8    print(f"Zero division error: {e}")
 9except ValueError as e:
10    print("Input was not a valid integer.")
11    print(f"Value error: {e}")
  • Kode ini adalah contoh menjalankan penanganan yang berbeda untuk setiap jenis pengecualian di blok except saat terjadi kesalahan pada blok try.

Menangani beberapa pengecualian secara bersamaan

Tentukan tuple ketika beberapa kelas pengecualian dapat berbagi logika penanganan yang sama.

1try:
2    my_list = [1, 2]
3    result = my_list[3] + 10 / 0
4except (IndexError, ZeroDivisionError) as e:
5    print(f"Exception occurred: {e}")
  • Kode ini adalah contoh menangkap IndexError dan ZeroDivisionError secara bersamaan dan menangani pengecualian dengan cara yang sama.

Menangkap pengecualian tanpa syarat

Hilangkan argumen untuk except jika Anda ingin menangani semua jenis pengecualian dalam satu blok.

1try:
2    # This code might cause some exception
3    result = "10" + 5  # TypeError
4except Exception as e:
5    print("Unexpected error")
  • Namun, menangani pengecualian tertentu daripada menangkap semua pengecualian tanpa syarat lebih membantu dalam menemukan bug dan melakukan debugging. Sebisa mungkin, menangani secara eksplisit hanya pengecualian yang diantisipasi seperti ValueError atau TypeError akan meningkatkan ketahanan kode Anda.

Blok else

Blok else hanya akan dijalankan jika tidak ada kesalahan yang terjadi di dalam blok try.

 1try:
 2    #number = int(input("Enter a number: "))
 3    number = 5
 4    result = 10 / number
 5except ZeroDivisionError as e:
 6    print("Cannot divide by zero!")
 7    print(f"Zero division error: {e}")
 8except ValueError as e:
 9    print("Input was not a valid integer.")
10    print(f"Value error: {e}")
11else:
12    # This block will execute only if no exceptions were raised
13    print("Result:", result)
  • Kode ini adalah contoh di mana blok else dijalankan hanya jika tidak terjadi kesalahan di blok try.

Blok finally

Blok finally digunakan untuk menulis kode yang akan selalu dijalankan di akhir, terlepas dari apakah terjadi kesalahan atau tidak di dalam blok try. Blok ini berguna untuk melepaskan sumber daya atau melakukan tugas pembersihan.

 1try:
 2    #number = int(input("Enter a number: "))
 3    number = int("abc")
 4    result = 10 / number
 5except ZeroDivisionError as e:
 6    print("Cannot divide by zero!")
 7    print(f"Zero division error: {e}")
 8except ValueError as e:
 9    print("Input was not a valid integer.")
10    print(f"Value error: {e}")
11else:
12    # This block will execute only if no exceptions were raised
13    print("Result:", result)
14finally:
15    # This block will always execute, regardless of whether an exception was raised
16    print("Execution completed.")
  • Kode ini adalah contoh yang menunjukkan bahwa blok finally dijalankan terlepas dari apakah terjadi pengecualian atau tidak.

Kata kunci raise

Dimungkinkan juga untuk memunculkan pengecualian dengan kata kunci raise ketika kondisi tertentu dalam kode yang ada tidak terpenuhi.

1def divide(a, b):
2    if b == 0:
3        raise ValueError("Cannot divide by zero.")
4    return a / b
5
6try:
7    result = divide(10, 0)
8except ValueError as e:
9    print(f"Error: {e}")
  • Kode ini adalah contoh secara eksplisit memunculkan pengecualian menggunakan kata kunci raise ketika suatu kondisi tidak terpenuhi.

Kesimpulan

Dengan menangani kesalahan dengan cara ini, Anda dapat mencegah kerusakan program, menampilkan pesan yang sesuai kepada pengguna, dan melanjutkan pemrosesan program berikutnya.

Anda dapat mengikuti artikel di atas menggunakan Visual Studio Code di saluran YouTube kami. Silakan periksa juga saluran YouTube kami.

YouTube Video