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}")
Фоидаҳо:
- Беҳтар кардани эътимоднокии барнома.
- Илова кардани коди, ки метавонад хато эҷод кунад.
- Иҷрои тоза ва равшантар байни логикаи оддӣ ва логикаи ҳалли хато.