Menu
Coddy logo textTech

Обработка нескольких исключений

Часть раздела Logic & Flow путешествия по Python на Coddy — урок 65 из 78.

В Python мы можем обрабатывать различные типы исключений в отдельных блоках except. Это позволяет нам реагировать по-разному в зависимости от конкретной возникшей ошибки.

Начните с базовой структуры try-except:

try:
    # Код, который может вызвать исключения
    pass
except Exception as e:
    # Обработка любого исключения
    pass

Чтобы обработать несколько исключений, добавьте соответствующие блоки except:

try:
    number = int(input("Enter a number: "))
    result = 10 / number
    print(result)
except ValueError:
    print("That's not a valid number!")
except ZeroDivisionError:
    print("Cannot divide by zero!")

Вы также можете перехватывать несколько типов исключений в одном блоке except:

try:
    # Некоторый код
    pass
except (ValueError, TypeError):
    print("Invalid input type!")

Порядок блоков except имеет значение — всегда располагайте более специфичные исключения перед более общими.

challenge icon

Задание

Легко

Создайте функцию с именем process_data, которая:

  1. Принимает строковый ввод, представляющий потенциальные данные
  2. Пытается преобразовать его в целое число, затем вычисляет результат деления 100 на это целое число
  3. Возвращает результат
  4. Обрабатывает как минимум 3 возможных исключения: 
    • ValueError, если ввод не может быть преобразован в целое число (выводит "Input must be a number!")
    • ZeroDivisionError, если ввод равен 0 (выводит "Cannot divide by zero!")
    • Любое другое исключение с помощью общего обработчика (выводит "An unexpected error occurred!")

Шпаргалка

Обрабатывайте различные типы исключений, используя несколько блоков except:

try:
    number = int(input("Enter a number: "))
    result = 10 / number
    print(result)
except ValueError:
    print("That's not a valid number!")
except ZeroDivisionError:
    print("Cannot divide by zero!")

Перехватывайте несколько типов исключений в одном блоке except:

try:
    # Некоторый код
    pass
except (ValueError, TypeError):
    print("Invalid input type!")

Всегда располагайте более специфичные исключения перед более общими в порядке следования блоков except.

Попробуйте сами

def process_data(input_string):
    try:
        # Попытка преобразовать входную строку в целое число
        
        # Вычислить 100, деленное на входное значение
        
        # Вернуть результат
        
    except ValueError:
        # Обработка случая, когда ввод не может быть преобразован в целое число
        
    except ZeroDivisionError:
        # Обработка случая, когда ввод равен нулю
        
    except:
        # Обработка любых других непредвиденных исключений
        
    return None
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Logic & Flow