Поиск по сайту:
Специалист подобен флюсу: полнота его односторонняя (К. Прутков).

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

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
28.06.2017
Как лучше всего использовать 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 и многое другое

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

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

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

try:
    #your code
except Exception as ex:
    print(ex)

 

Вернуться к началу

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

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

Python

except (Exception1, Exception2) as e:
    pass

 

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

Вернуться к началу

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

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

Python

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.

Python

try:
    file = open('input-file', 'open mode')
except:
    # В случае каких-либо необработанных ошибок, выбросить
    raise

Вернуться к началу

4. Повторное повышение исключения в Python

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

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

Python

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

 

Вывод:

Python

Entered in except.
Traceback (most recent call last):
  File "python", line 3, in <module>
Exception: Я учу Python!

 

Вернуться к началу

5. Когда использовать предложение else

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

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

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

Python

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] ВСЕГДА будет работать, даже если вы вернулись вперед.

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

Python

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

 

Вывод:

Python

Произошла ошибка
Обработан [finally clause]

Вернуться к началу

7. Используйте ключевое слово catch, чтобы поймать определенные типы исключений

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

Python

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

 

Вывод:

Python

('Ошибка:', IOError(2, 'Нет такого файла или каталога'))
('Код:', 2)

 

Вернуться к началу

8. Лучшая практика для ручного подъема исключения

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

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

Python

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

 

Вывод:

Python

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

 

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

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

Python

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

 

Вывод:

Python

(Тестирование исключения: вход в неправильном порядке', 'один', 'два', 'четыре')

Вернуться к началу

9. Как пропустить через ошибку и продолжить выполнение

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

Python

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

 

Вывод:

Python

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

 

Вернуться к началу

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

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

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

Вернуться к началу

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

Python

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.

Если статья понравилась, то поделитесь ей в социальных сетях:

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

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Спасибо!

Теперь редакторы в курсе.