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 baikValueError
maupunZeroDivisionError
.
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 bloktry
.
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
danZeroDivisionError
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
atauTypeError
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 bloktry
.
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.