Розуміння ієрархії виключень
Свайпніть щоб показати меню
Під час роботи з обробкою помилок у Python важливо розуміти структуру вбудованих класів виключень. Усі exceptions наслідуються від кореневого класу BaseException. Більшість виключень, з якими ви стикаєтеся у повсякденному коді, є підкласами Exception, який сам є прямим нащадком BaseException. Така структура дозволяє обробляти як широкі категорії помилок, так і конкретні проблеми.
Поширені виключення, такі як ValueError, TypeError, KeyError та IOError (у сучасному Python також відомий як OSError), є підкласами Exception. Існують також більш спеціалізовані виключення, наприклад, ZeroDivisionError та IndexError, які наслідуються від цих загальних класів. Деякі виключення, такі як KeyboardInterrupt і SystemExit, наслідуються безпосередньо від BaseException — зазвичай їх не слід перехоплювати у звичайних програмах.
Розуміння цієї ієрархії допомагає писати точні блоки try/except, перехоплюючи лише ті виключення, які ви плануєте, і не маскуючи критичні системні сигнали.
1234567891011121314151617181920212223242526272829303132def 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. Який вбудований виняток виникає при спробі доступу до ключа у словнику, якого не існує?
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат