Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Розуміння ієрархії виключень | Всебічна обробка помилок
Структурне програмування на Python

Розуміння ієрархії виключень

Свайпніть щоб показати меню

Під час роботи з обробкою помилок у Python важливо розуміти структуру вбудованих класів виключень. Усі exceptions наслідуються від кореневого класу BaseException. Більшість виключень, з якими ви стикаєтеся у повсякденному коді, є підкласами Exception, який сам є прямим нащадком BaseException. Така структура дозволяє обробляти як широкі категорії помилок, так і конкретні проблеми.

Поширені виключення, такі як ValueError, TypeError, KeyError та IOError (у сучасному Python також відомий як OSError), є підкласами Exception. Існують також більш спеціалізовані виключення, наприклад, ZeroDivisionError та IndexError, які наслідуються від цих загальних класів. Деякі виключення, такі як KeyboardInterrupt і SystemExit, наслідуються безпосередньо від BaseException — зазвичай їх не слід перехоплювати у звичайних програмах.

Розуміння цієї ієрархії допомагає писати точні блоки try/except, перехоплюючи лише ті виключення, які ви плануєте, і не маскуючи критичні системні сигнали.

1234567891011121314151617181920212223242526272829303132
def raise_and_catch_exceptions(): # Catching a ValueError try: int("not a number") except ValueError as ve: print("Caught ValueError:", ve) # Catching a ZeroDivisionError (subclass of ArithmeticError) try: result = 10 / 0 except ZeroDivisionError as zde: print("Caught ZeroDivisionError:", zde) # Catching a TypeError try: result = "10" + 5 except TypeError as te: print("Caught TypeError:", te) # Catching an OSError (formerly IOError) try: open("file_that_does_not_exist.txt") except OSError as oe: print("Caught OSError:", oe) # Catching a general Exception (will catch most, but not all, exceptions) try: raise KeyError("missing key") except Exception as e: print("Caught Exception:", type(e).__name__, "-", e) raise_and_catch_exceptions()

1. Який вбудований клас винятків слід використовувати для перехоплення помилок при спробі перетворити рядок у ціле число, якщо це неможливо?

2. Який вбудований виняток виникає при спробі доступу до ключа у словнику, якого не існує?

question mark

Який вбудований клас винятків слід використовувати для перехоплення помилок при спробі перетворити рядок у ціле число, якщо це неможливо?

Виберіть правильну відповідь

question mark

Який вбудований виняток виникає при спробі доступу до ключа у словнику, якого не існує?

Виберіть правильну відповідь

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 1

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Секція 1. Розділ 1
some-alt