Python try except как остановить программу

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

10/2 is 5.0 Traceback (most recent call last): File «/Users/pankaj/Documents/PycharmProjects/PythonTutorialPro/hello-world/exception_handling.py», line 6, in divide(10, 0) File «/Users/pankaj/Documents/PycharmProjects/PythonTutorialPro/hello-world/exception_handling.py», line 2, in divide print(f’/ is ‘) ZeroDivisionError: division by zero

Второй вызов функции div() вызвал исключение ZeroDivisionError, и программа завершилась.

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

Давайте перепишем метод div() с правильной обработкой исключений. Если кто-то попытается разделить на 0, мы перехватим исключение и выведем сообщение об ошибке. Таким образом, программа не завершится преждевременно, и вывод будет более понятным.

def divide(x, y): try: print(f’/ is ‘) except ZeroDivisionError as e: print(e) divide(10, 2) divide(10, 0) divide(10, 4)
10/2 is 5.0 division by zero 10/4 is 2.5

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

Try / Except | Python | Tutorial 27

Что такое класс BaseException?

Класс BaseException — это базовый класс всех исключений. Он имеет четыре подкласса.

  1. Исключение-это базовый класс для всех исключений, не связанных с выходом.
  2. GeneratorExit-запрос на выход генератора.
  3. KeyboardInterrupt-программа, прерванная пользователем.
  4. SystemExit-запрос на выход из интерпретатора.

Встроенные классы исключений

Вот некоторые из встроенных классов исключений в Python:

  • ArithmeticError — это базовый класс для арифметических ошибок.
  • AssertionError — возникает, когда утверждение не выполняется.
  • AttributeError — когда атрибут не найден.
  • BufferError
  • EOFError — чтение после конца файла
  • ImportError — когда импортированный модуль не найден.
  • LookupError — базовое исключение для ошибок поиска.
  • MemoryError — при нехватке памяти
  • NameError — когда имя не найдено глобально.
  • OSError — базовый класс для ошибок ввода-вывода
  • ReferenceError
  • Ошибка выполнения
  • StopIteration, StopAsyncIteration
  • SyntaxError — недопустимый синтаксис
  • SystemError — внутренняя ошибка интерпретатора Python.
  • TypeError — недопустимый тип аргумента
  • ValueError — недопустимое значение аргумента

Встроенные классы предупреждений

Класс Warning — это базовый класс для всех предупреждений. Он имеет следующие подклассы.

  • BytesWarning — предупреждения, связанные с байтами и буфером, в основном связанные с преобразованием и сравнением строк.
  • DeprecationWarning — предупреждение об устаревших функциях
  • FutureWarning — базовый класс для предупреждения о конструкциях, которые будут семантически изменяться в будущем.
  • ImportWarning — предупреждение об ошибках при импорте модулей
  • PendingDeprecationWarning — предупреждение о функциях, поддержка которых в будущем будет прекращена.
  • ResourceWarning — предупреждения об использовании ресурсов
  • RuntimeWarning — предупреждения о сомнительном поведении во время выполнения.
  • SyntaxWarning — предупреждение о сомнительном синтаксисе
  • UnicodeWarning — предупреждения, связанные с преобразованием Unicode
  • UserWarning — предупреждения, генерируемые кодом пользователя

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

Блок try может иметь несколько блоков except. Мы можем поймать определенные исключения в каждом из блоков except.

Python Tutorial: Using Try/Except Blocks for Error Handling


def divide(x, y): try: print(f’/ is ‘) except ZeroDivisionError as e: print(e) except TypeError as e: print(e) except ValueError as e: print(e)

Код в каждом блоке except одинаковый. В этом сценарии мы можем обрабатывать несколько исключений в одном блоке except. Мы можем передать кортеж объектов исключения в блок except, чтобы поймать несколько исключений.

def divide(x, y): try: print(f’/ is ‘) except (ZeroDivisionError, TypeError, ValueError) as e: print(e)

Поймать все исключения в блоке с одним исключением

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

Пустое предложение except должно быть последним.

def divide(x, y): try: print(f’/ is ‘) except ZeroDivisionError as e: print(e) except: print(«unknown error occurred»)

Использование else Block с try-except

Код блока else не является обязательным. Он выполняется, когда нет исключений, вызванных блоком try.

Читайте также:
Как научиться делать проекты в программе

def divide(x, y): try: print(f’/ is ‘) except ZeroDivisionError as e: print(e) else: print(«divide() function worked fine.») divide(10, 2) divide(10, 0) divide(10, 4)

Try Except Else пример

Код блока else выполняется дважды, когда блок try функции div() работал без каких-либо исключений.

Использование finally Block с try-except

Код блока finally выполняется во всех случаях, независимо от того, есть ли исключение или нет. Блок finally используется для закрытия ресурсов и выполнения действий по очистке.

def divide(x, y): try: print(f’/ is ‘) except ZeroDivisionError as e: print(e) else: print(«divide() function worked fine.») finally: print(«close all the resources here») divide(10, 2) divide(10, 0) divide(10, 4)

Try Except Else Finally блок

Синтаксис

окончательный синтаксис таков:

try -> except 1. n -> else -> finally

У нас может быть много блоков except для блока try. Но у нас может быть только еще один else, finally блок.

Создание настраиваемого класса исключения

Обработка исключений в Python – операторы try-expect, else, finally

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

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

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

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

Общие исключения

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

  1. ZeroDivisionError: возникает при делении числа на ноль.
  2. NameError: возникает, когда имя не найдено. Может быть локальным или глобальным.
  3. IndentationError: если задан неправильный отступ.
  4. IOError: возникает при сбое операции ввода-вывода.
  5. EOFError: происходит, когда достигается конец файла, но операции выполняются.

Проблема без обработки исключений

Как мы уже обсуждали, исключение – это ненормальное состояние, которое останавливает выполнение программы.

Предположим, у нас есть две переменные a и b, которые принимают ввод от пользователя и выполняют деление этих значений. Что, если пользователь ввел ноль в качестве знаменателя? Это прервет выполнение программы и вызовет исключение ZeroDivision. Посмотрим на следующий пример.

a = int(input(«Enter a:»)) b = int(input(«Enter b:»)) c = a/b print(«a/b = %d» %c) #other code: print(«Hi I am other part of the program»)
Enter a:10 Enter b:0 Traceback (most recent call last): File «exception-test.py», line 3, in c = a/b; ZeroDivisionError: division by zero

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

Оператор try-expect

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

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

try: #block of code except Exception1: #block of code except Exception2: #block of code #other code
try: a = int(input(«Enter a:»)) b = int(input(«Enter b:»)) c = a/b except: print(«Can’t divide with zero»)
Enter a:10 Enter b:0 Can’t divide with zero

Как лучше всего использовать Try Except в Python — Специально для начинающих

Как лучше всего использовать Try Except в Python - Специально для начинающих

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

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

Зачем использовать классы Try-Except/Try-Except-else? С помощью try-except и try-except-else, вы можете избежать многих неизвестных проблем которые могут возникнуть из вашего кода. Например, в коде Python с использованием LBYL (Посмотрите прежде чем заходить в цикл) стиль может привести к условиям гонки. Здесь, класс try-except может прийти, чтобы спасти вас.

Читайте также:
Как установить программу на мак без пароля

Кроме того, есть случаи когда ваш код зависит от некоторой информации которая может устареть до того времени вы получите его. Например, код делает вызовы os.path.exists или Queue.full, которые могут возвращать данные которые становятся устаревшими к тому времени, когда вы их используете. Мудрый выбор здесь будет следовать try-except в вашем коде для управления выше случаев более надежно.

Повышение исключений также допустимо в Python. Это означает вы можете бросить или вызвать исключение когда это необходимо. Вы можете сделать это просто вызывая [raise Exception(‘Test error!’)] из вашего кода. После как подняли, исключение прекратит выполнение текущего кода как обычно и будет идти дальше в стеке вызовов до тех пор пока обрабатывается.

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

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

Python: Советы по использованию Try-Except, Try-Except-Else и многое другое

  • Как обрабатывать произвольное исключение
  • Поймать несколько исключений в одном блоке Except
  • Обработка нескольких исключений с одним блоком except
  • Повторное повышение исключений в Python
  • Когда использовать предложение else
  • Используйте [class finally]
  • Используйте ключевое слово Catch, чтобы поймать определенные типы исключений
  • Лучшая практика для ручного подъема исключения
  • Как пропустить ошибку и продолжить выполнение
  • Большинство ошибок общего исключения в Python
  • Примеры наиболее распространенных исключений в Python

1. Как обрабатывать произвольное исключение

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

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

try: #your code except Exception as ex: print(ex)
2. Поймать несколько исключений в одном блоке Except

Вы можете поймать несколько исключений в одиночном блока Except. Смотрите пример ниже.

except (Exception1, Exception2) as e: pass

Обратите внимание, что вы можете отделить исключения от переменных с запятой, которая применима в Python 2.6/2.7. Но вы не можете сделать это в Python 3. Таким образом, вы должны предпочесть использовать ключевое слово [as].

3. Обработка нескольких исключений с одним блоком Except

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

try: file = open(‘input-file’, ‘open mode’) except (IOError, EOFError) as e: print(«Testing multiple exceptions. <>».format(e.args[-1]))

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

try: file = open(‘input-file’, ‘open mode’) except EOFError as ex: print(«Caught the EOF error.») raise ex except IOError as e: print(«Caught the I/O error.») raise ex

Последнее, но не в последнюю очередь является использование только без упоминания какого-либо атрибута except.

try: file = open(‘input-file’, ‘open mode’) except: # В случае каких-либо необработанных ошибок, выбросить raise
4. Повторное повышение исключения в Python

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

Смотрите ниже пример кода.

try: # Намеренно вызывать исключение. raise Exception(‘Я учу Python!’) except: print(«Entered in except.») # Re-raise исключение. raise

Вывод:

Entered in except. Traceback (most recent call last): File «python», line 3, in Exception: Я учу Python!
5. Когда использовать предложение else

Используйте класс else сразу после блока try-except.

Предложение else будет попасть только если исключение не генерируется. Заявление else должно всегда предшествовать блоку except.

В блоке else, вы можете добавить код, который должен работать, когда не произошло никаких ошибок.

Читайте также:
При запуске программ выходит ошибка

Смотрите пример ниже. В этом примере вы можете увидеть цикл при запуске бесконечно. Код запрашивает ввод пользователя, а затем разбор его с помощью встроенной функции [Int ()]. Если пользователь вводит нулевое значение, то, за исключением блока будет получить удар. В противном случае код будет проходить через блок else.

while True: # Введите целочисленное значение из консоли. x = int(input()) # Разделите 1 на x, чтобы проверить ошибки try: result = 1 / x except: print(«Случае ошибки») exit(0) else: print(«Пример передачи») exit(1)
6. Используйте [class Finally]

Если у вас есть код, который вы хотите запустить во всех ситуациях, а затем записать его внутри [finally block]. Python всегда будет обрабатывать инструкции, закодированные в [finally clause].

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

Ошибка поймана в классе try. После того, как код в блоке except запускается на выполнение, инструкции в [finally clause] будут работать.

Обратите внимание, что [finally clause] ВСЕГДА будет работать, даже если вы вернулись вперед.

Смотрите пример ниже.

try: # Намеренно вызвать ошибку. x = 1 / 0 except: # Except clause: print(«Произошла ошибка») finally: # Finally clause: print(«Обработан [finally clause]»)

Вывод:

Произошла ошибка Обработан [finally clause]
7. Используйте ключевое слово catch, чтобы поймать определенные типы исключений

С помощью , вы можете создать новый объект.

И вы можете также создать объект исключения. Здесь, в приведенном ниже примере, мы создаем объект IOError, а затем используем его в предложении.

try: # Намеренно вызвать ошибку. f = open(«no-file») except IOError as err: # Создание экземпляра IOError для бухгалтерского учета. print(«Ошибка:», err) print(«Код:», err.errno)

Вывод:

(‘Ошибка:’, IOError(2, ‘Нет такого файла или каталога’)) (‘Код:’, 2)
8. Лучшая практика для ручного подъема исключения

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

Плохой пример.

def bad_exception(): try: raise ValueError(‘Умышленное — не хочу, чтобы это поймали’) raise Exception(‘Исключение будет обработано’) except Exception as error: print(‘Внутри, кроме блока: ‘ + repr(error)) bad_exception()

Вывод:

Inside the except block: ValueError(‘Умышленное — не хочу, чтобы это поймали’,)

Лучшая практика:

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

try: raise ValueError(‘Тестирование исключения: вход в неправильном порядке’, ‘один’, ‘два’, ‘четыре’) except ValueError as err: print(err.args)

Вывод:

(Тестирование исключения: вход в неправильном порядке’, ‘один’, ‘два’, ‘четыре’)
9. Как пропустить через ошибку и продолжить выполнение

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

try: assert False except AssertionError: pass print(‘Добро пожаловать на andreyex. ‘)

Вывод:

Добро пожаловать на andreyex.

Теперь посмотрим на некоторые из наиболее распространенных исключений Python и их примеры.

Большинство ошибок общего исключения

  • IOError — Эта ошибка происходит когда файл не открывается.
  • ImportError — Если модуль Python не может быть загружен или найден.
  • ValueError — Это происходит если функция получает аргумент правильного типа но неподходящего значения.
  • KeyboardInterrupt — Получает удар когда пользователь вводит символ прерывания (т.е. клавиши Control-C или Del)
  • EOFError — Получает повышение если входные функции (input()/raw_input()) вызвали конца-файла условие (EOF) но без чтения каких либо данных.

Примеры наиболее распространенных исключений

except IOError: print(‘Произошла ошибка открытия файла.’) except ValueError: print(‘Обнаружен не-числовой вход.’) except ImportError: print(‘Не удалось найти модуль.’) except EOFError: print(‘Выявлена ошибка EOF.’) except KeyboardInterrupt: print(‘Неправильный ввод с клавиатуры.’) except: print(‘Произошла ошибка.’)

Резюме — как наилучшим образом использовать исключение Try-Except Python

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

В любом случае, все это может быть обработано, если в вашем коде использовать обработки исключений и реализовать их с конструкциями, try-except, или tr-except-else, try-except-finally. Надеюсь, вам понравилась наша статья.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник: andreyex.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru