ОСНОВНОЕ

WORDPRESS

Операционные системы

Базы данных

Фреймворк Bootstrap

Правда — качество, крайне редко встречаемое в эпитафиях (Г. Торо).

Python 3 – Обработка исключений

FavoriteLoadingДобавить в избранное
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Python 3 - Обработка исключений
Python предоставляет две очень важные функции, чтобы справиться с любой неожиданной ошибкой в программах на языке Python и добавить возможности их отладки:

  • Обработка исключений – Будет охвачена в этом руководстве. Список стандартных исключений, доступных в Python будет рассмотрен здесь.
  • Утверждения – Будет рассмотрено в учебнике об утверждениях в Python 3.

Стандартные исключения

Ниже приведен список стандартных исключений доступных в Python:

Имя и Описание исключений
1 Exception – Базовый класс для всех исключений
2 StopIteration – Возникает, когда метод next() цикла не указывает на какой-либо объект.
3 SystemExit – Вызываемая функция sys.exit().
4 StandardError – Базовый класс для всех встроенных исключений, кроме StopIteration и SystemExit.
5 ArithmeticError – Базовый класс для всех ошибок, которые возникают для числовых расчетов.
6 OverflowError – Возникает, когда значение превышает максимальный предел для числового типа.
7 FloatingPointError – Возникает, когда расчет с плавающей точкой терпит неудачу.
8 ZeroDivisonError – Возникает при делении или по модулю нуля, имеет место для всех числовых типов.
9 AssertionError – Вызывается в случае выхода из строя заявления Assert.
10 AttributeError – Вызывается в случае выхода из строя ссылки на атрибут или назначения.
11 EOFError – Возникает, когда нет входного сигнала либо из raw_input () или функции inpud() и достигнут конец файла.
12 ImportError – Возникает, когда оператор import терпит неудачу.
13 KeyboardInterrupt – Возникает, когда пользователь прерывает выполнение программы, как правило, нажав Ctrl + C.
14 LookupError – Базовый класс для всех ошибок поиска.
15 IndexError – Возникает, когда индекс не найден в последовательности.
16 KeyError – Возникает, когда указанный ключ не найден в словаре.
17 NameError – Возникает, когда идентификатор не найден в локальных или глобальном пространстве имен.
18 UnboundLocalError – Возникает при попытке доступа к локальной переменной в функции или метода, но значение не было присвоено.
19 EnvironmentError – Базовый класс для всех исключений, которые происходят за пределами среды Python.
20 IOError – Возникает, когда операция ввода/вывода не работает, например, заявление для печати или функции Open() при попытке открыть файл, который не существует.
21 OSError – Вызывает ошибку, связанную с операционной системой.
22 SyntaxError – Возникает, когда есть ошибка в синтаксисе Python.
23 IndentationError – Возникает, когда не указаны правильно отступы.
24 SystemError – Возникает, когда интерпретатор находит внутреннюю проблему, но при возникновении этой ошибки интерпретатор Python не выходит.
25 SystemExit – Вызывается, когда интерпретатор Python выходит с помощью sys.функции exit(). Если код не обработан, переводчик завершает работу.
26 TypeError – Возникает при попытке операции или функции, недопустимой для указанного типа данных.
27 ValueError – Возникает, когда встроенная функция для типа данных имеет допустимый тип аргументов, но аргументы имеют недопустимые значения.
28 RuntimeError – Возникает, когда генерируется ошибка не попадающая ни в какую категорию.
29 NotImplementedError – Возникает, когда абстрактный метод, который должен быть реализован у унаследованного класса фактически не реализуется.

Утверждения в Python

Утверждение является осознанной проверкой, которую вы можете включить или выключить, когда вы проводите тестирование программы.

  • Самый простой способ создать утверждение, является приравнять его к заявление raise-if (или быть более точным, заявление raise-if-not). Выражение проверяется, и если результат приходит ложным, возбуждается исключение.
  • Утверждения выполняются оператором assert, новейшим ключевым словом Python, введенным в версии 1.5.
  • Программисты часто размещают утверждения в начале функции для проверки допустимого ввода и после вызова функции для проверки допустимого вывода.

Заявление assert

Когда встречается оператор assert, Python оценивает сопровождающие выражение, которое, мы надеемся, верно. Если выражение ложно, Python вызывает исключение AssertionError.

Синтаксис assert:

Если утверждение не удается, Python использует ArgumentExpression в качестве аргумента для AssertionError. Исключение AssertionError может быть перехвачено и обработано, как и любое другое исключение, используя заявление try-except. Если они не обработаны, они завершат программу и произведут обратную трассировку.

Пример

Вот функция, которая преобразует заданную температуру от градусов Кельвина до градусов по Фаренгейту. Так как 0° К это абсолютный 0, то получается, что функция вываливается, если он видит отрицательную температуру:

 

Когда этот код выполниться, он выдаст следующий результат:

Что такое исключение?

Исключением является событие, которое происходит во время выполнения программы, когда нарушается нормальный поток команд в программе. В общем случае, когда сценарий Python сталкивается с ситуацией, что он не может справиться с ним, он вызывает исключение. Исключение представляет собой объект Python, который представляет ошибку.

Когда сценарий Python вызывает исключение, он должен либо обработать исключение, сразу же, в противном случае он прекращает свою работу и завершает работу.

Обработка исключения

Если у вас есть какой-то подозрительный код, который может вызвать исключение, вы можете защитить свою программу путем размещения подозрительного кода в блоке try:. Блок try: включает в себя, заявление except:, следует блок кода, который обрабатывает проблему как можно элегантнее.

Синтаксис

Вот простой синтаксис блоков try….except…else:

 

Вот несколько важных моментов, о вышеупомянутом синтаксисе:

  • Один оператор может попытаться иметь несколько заявлений. Это полезно, когда блок попытка содержит заявления, которые могут бросить различные типы исключений.
  • Кроме того, можно предоставить универсальное предложение, которое обрабатывает любое исключение.
  • После класса except, можно добавить класс else. Код else-block выполниться, если код в блоке try: не вызывает исключение.
  • else-block является хорошим местом для кода, который не нужно попробовать: защита блока.

Пример

Этот пример открывает файл, записывает содержимое в файл и выходит корректно, потому что нет никаких проблем:

 

Данный код выдаст следующий результат:

Пример

В этом примере попытаемся открыть файл, в котором у вас нет разрешения на запись, поэтому он вызывает исключение:

 

Данный код выдаст следующий результат:

Класс except без исключений

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

 

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

Класс except с несколькими исключениями

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

 

Класс try-finally

Вы можете использовать блок finally: вместе с блоком try:. Блок finally: представляет собой место, куда можно поместить любой код, который должен выполнится, вызовет ли блок try исключение или нет. Синтаксис заявление try-finally следующий:

 

Примечание:
Вы можете указать за предложением except или классом finally, но не оба. Нельзя использовать предложение else  вместе с предложением finally.

Пример

 

Если у вас нет разрешения на открытие файла в режиме записи, то это приведет к следующему результату:

 

Тот же пример можно записать более аккуратно следующим образом:

 

Когда исключение в блоке try выполниться, немедленно переходит к блоку finally. После того как все операторы в блоке finally выполнятся, то возбуждается исключение снова и обрабатывается заявление except, если присутствует в следующем более высокого уровня заявление try-except.

Аргумент в исключении

Исключение может иметь argument, который является значением, которое дает дополнительную информацию о проблеме. Содержание аргумента зависит от исключения. Вы фиксируете аргумент исключения, предоставляя переменную в предложении except следующим образом:

 

Если вы пишете код для обработки исключения, вы можете указать переменную, следующую за именем исключения в предложении except. Если вы перехватываете несколько исключений, вы можете иметь переменную в виде кортежа с исключениями.

Эта переменная получает значение исключения, в основном содержащего причину исключения. Переменная может получать одно или несколько значений в виде кортежа. Этот кортеж обычно содержит строку ошибки, номер ошибки и расположение ошибки.

Пример

Ниже приведен пример для одного исключения:

 

Данный код выдаст следующий результат:

Исключение raise

Вы можете вызвать исключения несколькими способами, используя оператор raise. Общий синтаксис для заявления raise выглядит следующим образом:

Синтаксис

 

Здесь Exception представляет собой тип исключения (например, NameError) и arg является значением для аргумента исключения. Аргумент является необязательным; если не прилагается, аргумента в исключении нет.

Последний аргумент, отслеживающий, также является необязательным (и редко используется на практике), и если он присутствует, отслеживающий объект используется для исключения.

Пример

Исключением может быть строка, класс или объект. Большинство исключений, создаваемых ядром Python, являются классами с аргументом, который является экземпляром класса. Определение новых исключений довольно легко и может быть сделано следующим образом:

 

Примечание:
Для того, чтобы поймать исключение, заявление “except” должно ссылаться на то же исключение, указанное либо как объект класса или простую строку.

Например, чтобы захватить исключение выше, мы должны написать пункт except следующим образом:

 

Следующий пример иллюстрирует использование средств исключения:

 

Это выдаст следующий результат:

Исключения определенные пользователем

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

Вот пример, связанный с RuntimeError. Здесь, создается класс, как подкласс RuntimeError. Это полезно, когда вам нужно отобразить более конкретную информацию при перехвате исключения.

В блоке try , определенный пользователем возбуждаются исключение и ловится за блоком except. Переменная е используются для создания экземпляра класса NetworkError.

 

Поэтому, как только вы определили класс выше, вы можете вызвать исключение следующим образом:

 

Python 3 - Обработка исключений

Читайте также

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Простая логическая игра "Поймай кота". Задача игры окружить кота точками так, чтобы он не смог убежать с поля. Постигла неудача - начни игру снова!

Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

badge
Обратный звонок 1
Отправить
galka

Спасибо! Ваша заявка принята

close
galka

Спасибо! Ваша заявка принята

close