Pengendalian Ralat dalam Python

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 ada ValueError atau ZeroDivisionError.

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 blok try.

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 dan ZeroDivisionError 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 atau TypeError 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 blok try.

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.

YouTube Video