Подтвердить что ты не робот

Почему исключения Python называются "Ошибка"?

Почему исключения Python называются "Ошибка" (например, ZeroDivisionError, NameError, TypeError) а не "Исключение" (например, ZeroDivisionException, NameException, TypeException).

Я пришел из фона Java и начал изучать Python недавно, так как это запутывает, потому что в Java существует различие между ошибками и исключениями.

Есть ли разница и в Python?

4b9b3361

Ответ 1

  • Вы не называете каждый класс "Class" в имени и каждой переменной с именем "_variable". То же имя вы не называете исключением, используя слово "Исключение". Имя должно что-то сказать о значении объекта. "Ошибка" - это значение большинства исключений.

  • Не все исключения являются ошибками. SystemExit, KeyboardInterrupt, StopIteration, GeneratorExit - все исключения, а не ошибки. Слово "ошибка" в фактических ошибках показывает разницу.

  • "Ошибка" короче, чем "Исключение". Чем можно сохранить несколько символов в ширине кода без потери смысла. Это имеет значение.

Ответ 2

Я считаю, что это соглашение происходит от PEP 8 - Руководство по стилю для кода Python:

Имена исключений

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

Ответ 3

В этом отношении Python довольно похож на Java. Но исключение Python следует сравнить с Java Throwable.

Как Throwables приходят во всех видах ароматов - Error, RuntimeException и (checked) Exception - так же делают Python (хотя и не проверенные исключения).

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

Мне особенно не нравится имя Exception. Исключения используются не только для исключительных обстоятельств (например, мы надеемся, ошибки), но и для того, чтобы просто выйти из потока управления. Потому что это то, что делает Исключение; он выпрыгивает из нормального потока управления в отмеченную точку. Немного похоже на goto, но более утонченный.

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

Ответ 4

Q. Почему исключения Python называются "Ошибка"?

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

Примерами предупреждений являются DeprecationWarning и ImportWarning.

Пожалуйста, смотрите иерархию классов 2.x для встроенных исключений, а также для 3.x.

Ответ 5

Это просто именование. В Java у вас есть java.lang.Error, отличный от других Throwable, потому что эти ошибки необходимо отключить. В Python все исключения не отмечены, поэтому различие не имеет смысла.

Ответ 6

Проще говоря:

  • Исключения Python НЕ называются "Ошибка".
  • Ошибки Python называются "Ошибка".
  • Ошибки Python могут быть подняты, пойманы и обработаны как исключения.
  • Что-то, начинающееся как ошибка, может оказаться обработанным исключением, которое не приводит к сообщению об ошибке.
  • Exception также может быть поднято напрямую

Концепция:

Я обычно делаю это, но я собираюсь сделать исключение

ИЛИ ЖЕ

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

Подробности:

Исключения против ошибок:

https://docs.python.org/2/tutorial/errors.html

Ошибки, обнаруженные во время выполнения, называются исключениями и не являются безоговорочно фатальными

Процедура:

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