Sobes.tech
Junior

Чӣ гуна коркарди истисноҳо дар Python аст?

sobes.tech AI

Ҷавоб аз AI

Механизми барои идоракунии истисноҳо дар Python як роҳест барои фатҳ кардан ва вокуниш нишон додан ба хатоҳо ё ҳодисаҳо, ки иҷрои муқаррарии барномаҳоро бозмедоранд.

Блоки try...except...finally ё try...except...else...finally истифода мешавад.

try:
    # Код, ки метавонад истисно эҷод кунад
    result = 10 / 0
except ZeroDivisionError:
    # Ҳал кардани истиснои махсус
    print("Хатогӣ: тақсим ба сифр!")
except Exception as e:
    # Ҳал кардани ҳар гуна истиснои дигар
    print(f"Ҳодиса рӯй дод: {e}")
else:
    # Агар дар блоки try ҳеҷ гуна истисно набошад, иҷро мешавад
    print("Амалиёт бо муваффақият анҷом ёфт.")
finally:
    # Ҳамеша иҷро мешавад, новобаста аз истисноҳо
    print("Блоги finally иҷро шуд.")

Компонентҳои асосӣ:

  • try: Блоги коди, ки дар он интизор меравад, ки истисно рух диҳад.
  • except: Блоги коди, ки вақте як навъ муайяни истисно рӯй медиҳад, иҷро мешавад. Муштарӣ метавонад чанд except барои навъҳои гуногуни истисноҳо истифода барад.
  • else: (Ихтиёрӣ) Блоги коди, ки вақте дар try ҳеҷ гуна истисно рух надода бошад, иҷро мешавад.
  • finally: (Ихтиёрӣ) Блоги коди, ки ҳамеша иҷро мешавад, новобаста аз он, ки истисно рух дод ё на.
  • raise: Калидвожа барои эҷоди истиснои равшан.
def divide(a, b):
    if b == 0:
        raise ValueError("Делитель на нулю")
    return a / b

try:
    divide(10, 0)
except ValueError as e:
    print(f"Ҳал кардани истиснои махсус: {e}")

Фоидаҳо:

  • Беҳтар кардани эътимоднокии барнома.
  • Илова кардани коди, ки метавонад хато эҷод кунад.
  • Иҷрои тоза ва равшантар байни логикаи оддӣ ва логикаи ҳалли хато.