Pengendalian Ralat dalam Python
Dalam artikel ini, kami akan menerangkan pengendalian ralat dalam Python.
YouTube Video
Pengendalian Ralat dalam Python
Pengendalian ralat dalam Python terutamanya dilakukan menggunakan kata kunci try
, except
, else
, dan finally
. Menggunakan struktur ini membolehkan anda bertindak balas dengan sesuai apabila berlaku ralat dalam program anda. Di bawah, kami akan menerangkan bagaimana menggunakan setiap satunya.
Blok try
Di dalam blok try
, anda menulis kod yang anda ingin laksanakan. Jika ralat berlaku dalam blok ini, pelaksanaan program akan terus dialihkan 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}")
- Kod ini adalah contoh mengesan ralat dalam blok
try
dan menanganinya dengan sewajarnya dengan menangkap sama adaValueError
atauZeroDivisionError
.
Blok except
Di dalam blok except
, anda menulis kod yang akan dilaksanakan apabila pengecualian (ralat) tertentu berlaku. Anda juga boleh menangkap pengecualian tertentu bergantung pada jenis pengecualian yang berlaku.
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}")
- Kod ini adalah contoh melaksanakan pengendalian yang berbeza bagi setiap jenis pengecualian dalam blok
except
apabila ralat berlaku dalam bloktry
.
Mengendalikan pelbagai pengecualian bersama
Nyatakan tuple apabila kelas pengecualian berganda boleh berkongsi logik pengendalian 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}")
- Kod ini adalah contoh menangkap kedua-dua
IndexError
danZeroDivisionError
sekali gus dan mengendalikan pengecualian tersebut dengan cara yang sama.
Menangkap pengecualian tanpa syarat
Tinggalkan argumen untuk except
jika anda ingin mengendalikan 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")
- Walau bagaimanapun, menangani pengecualian khusus berbanding menangkap semua pengecualian tanpa syarat adalah lebih membantu untuk mencari pepijat dan melakukan penyahpepijatan. Jika boleh, dengan secara jelas mengendalikan hanya pengecualian yang dijangka seperti
ValueError
atauTypeError
akan meningkatkan ketahanan kod anda.
Blok else
Blok else
hanya akan dilaksanakan jika tiada ralat berlaku 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)
- Kod ini adalah contoh di mana blok
else
hanya akan dilaksanakan jika tiada ralat berlaku dalam bloktry
.
Blok finally
Blok finally
digunakan untuk menulis kod yang akan sentiasa dilaksanakan pada akhirnya, tanpa mengira sama ada ralat berlaku dalam blok try
. Ia berguna untuk melepaskan sumber atau menjalankan 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.")
- Kod ini adalah contoh yang menunjukkan bahawa blok
finally
akan dilaksanakan tanpa mengira sama ada pengecualian berlaku atau tidak.
Kata kunci raise
Ia juga mungkin untuk menaikkan pengecualian menggunakan kata kunci raise
apabila syarat-syarat tertentu dalam kod yang sedia ada tidak dipenuhi.
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}")
- Kod ini adalah contoh secara jelas membangkitkan pengecualian menggunakan kata kunci
raise
apabila keadaan tidak dipenuhi.
Kesimpulan
Dengan mengendalikan ralat dengan cara ini, anda boleh mengelakkan kerosakan program, memaparkan mesej yang sesuai kepada pengguna, dan meneruskan pemprosesan program seterusnya.
Anda boleh mengikuti artikel di atas menggunakan Visual Studio Code di saluran YouTube kami. Sila lihat juga saluran YouTube kami.