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

На заметку
Дополнительная информация доступна в статьях: Встроенные исключения и try except finally.

Если после инструкции отсутствует выражение, то повторно поднимается исключение, имеющее место быть в данной области. Если в данной области нет активного исключения, возбуждается RuntimeError (до -py3.0 возбуждалось TypeError).

    try:
# Допустим в функции поднимается FileNotFoundError.
do()

except OSError:
# Инструкция raise без выражение поднимет FileNotFoundError повторно.
raise

Если выражение присутствует, то результатом его вычисления должен являться либо экземпляр наследника BaseException, либо сам наследник (в этом случае объект исключения будет сформирован путём его инстанциирования без аргументов).

   # Объект сформируется из класса автоматически.
raise MyException

# Формируем объект исключения вручную.
raise MyException('Моё исключение')

Типом исключения является тип объекта исключения, а значением — сам объект исключения.

Объект трассировки

Объект трассировки обычно создаётся автоматически при возбуждении исключения и подвязывается к нему в атрибут __traceback__. Упомянутый атрибут поддерживает запись. Вы можете в один приём создать исключение и подвязать к нему трассировку при помощи метода исключения with_traceback() (метод вернёт тот же объект исключения для которого вызван):

    raise Exception('Возбуждено исключение').with_traceback(traceback_obj)

Цепочки исключений

Для формирования цепочек исключений используется дополнение from. При его использовании требуется указать ещё одно исключение (класс, либо объект). Этот объект будет подвязан к возбуждаемому исключению в атрибут __cause__ (атрибут поддерживает запись). В результате, если возбуждаемое исключение не обработано, но на вывод будут отправлены оба исключения:

    try:
print(1 / 0)

except Exception as exc:
# Наше второе исключение никто не поймает
# поэтому будет выведена цепочка
# из двух исключений.
raise RuntimeError('Явная цепочка исключений') from exc

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

    try:
print(1 / 0)

except:
raise RuntimeError('Неявная цепочка исключений')

На заметку
+py3.3 Автоматическое формирование цепочки можно подавить, указав None после from. В ходе данной операции задействуется атрибут __suppress_context__.


Python 2

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

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

Если первый объект явится классом. То он и станет типом исключения. При этом для определения значения исключения будет использован второй объект.

Второй объект.
1. Если он явится экземпляром, то этот экземпляр и станет значением исключения.
2. Если второй объект явится кортежем, то он будет использован в качестве списка аргументов для инициализатора класса.
3. Если объект явится None, то в инициализатор будет передан пустой список аргументов.

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

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

Использование трёх выражений служит для более прозрачного повторного возбуждения исключения. В сочетании с sys.exc_info() это в некоторой степени похоже на то, что делает from в Python 3:

    try:
do()

except:
exc_info = sys.exc_info()
raise exc_info[0], exc_info[1], exc_info[2]



Нет обсуждений для отображения.
Если у вас есть, что сказать, можете представиться и исправить ситуацию.