Python, стирая исключение без аргументов

Я хотел бы знать лучшую практику о повышении исключения без аргументов. В официальной документации Python Вы видите это:

try:
    raise KeyboardInterrupt

(Парень http://docs.python.org/tutorial/errors.html. 8.6)

и в некотором коде differents, как Django или код Google, Вы видите это:

  def AuthenticateAndRun(self, username, password, args):
    raise NotImplementedError()

(http://code.google.com/p/neatx/source/browse/trunk/neatx/lib/auth.py)

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

Заранее спасибо Fabien

12
задан Fabien Engels 12 July 2010 в 12:43
поделиться

2 ответа

Создание класса исключения вместо экземпляра исключения является устаревшим синтаксисом и не должно использоваться в новом коде.

raise Exception, "This is not how to raise an exception..."
3
ответ дан 2 December 2019 в 23:06
поделиться

В языках вроде C++ вы можете поднять любой объект, а не только исключения. Python более ограничен. Если вы попробуете :

raise 1

Вы получите:

Traceback (most recent call last):
...
TypeError: exceptions must be old-style classes or derived from BaseException, not int

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

Однако, как сказал Игнасио, это устарело.

Также, небольшое замечание, не относящееся к прямому вопросу:

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

0
ответ дан 2 December 2019 в 23:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: