Почему исключения Python под названием "Error" (например ZeroDivisionError
, NameError
, TypeError
) , а не "Exception" (например ZeroDivisionException
, NameException
,TypeException
).
Я вырос в Java и недавно начал изучать Python, поэтому это сбивает с толку, потому что в Java есть различие между ошибками и исключениями.
Есть ли разница в Python или нет?
Warning
. Пожалуйста, посмотрите мой ответ .Я считаю, что это соглашение взято из PEP 8 - Style Guide for Python Code :
источник
В этом отношении Python очень похож на Java. Но Python Exception следует сравнить с Java Throwable.
Поскольку Throwables бывают всевозможных разновидностей - Error, RuntimeException и (проверено) Exception - то же самое и с Python (хотя никаких проверенных исключений).
Что касается языка, ошибка является исключительной, так что иерархия наследования не является странной.
Хотя мне не очень нравится название Exception. Исключения используются не только для исключительных обстоятельств (например, ошибок, надеюсь), но и для того, чтобы просто выйти из потока управления. Потому что это то, что делает исключение; он переходит из обычного потока управления в отмеченную точку. Немного похоже на goto, но более изысканно.
Тем не менее, каждый раз, когда у вас возникает ситуация, в которой невозможно найти подходящее возвращаемое значение, вы склонны использовать исключение. И в Python, и в Java.
источник
Error
в своем имени.Я предполагаю, что это связано с тем, что большинство исключений Python классифицируются как ошибки или предупреждения . Если бы имена исключений Python заканчивались на
Exception
, это различие было бы невозможно.Примеры предупреждений:
DeprecationWarning
иImportWarning
.Пожалуйста , обратитесь к иерархии классов 2.х для встроенных исключений , а также , что для 3.x .
источник
Проще говоря:
Exception
Также может быть поднят напрямуюКонцепция:
ИЛИ ЖЕ
Обычно это ошибка, но мы собираемся сделать исключение, поймать его и выполнить некоторую процедуру.
Детали:
Исключения против ошибок:
https://docs.python.org/2/tutorial/errors.html
Рабочий процесс:
источник
Это просто наименование. В Java у вас есть
java.lang.Error
отличия от других,Throwable
потому что такие ошибки нужно не проверять. В Python все исключения не отмечены, поэтому различие бессмысленно.источник
class ExceptionHandlingException extends RuntimeException
и это просто ужасно читать.