¿Por qué son excepciones Python denominan "error" (por ejemplo ZeroDivisionError
, NameError
, TypeError
) y no "excepción" (por ejemplo ZeroDivisionException
, NameException
, TypeException
).
Vengo de una experiencia en Java y comencé a aprender Python recientemente, como tal, esto es confuso porque en Java hay una distinción entre errores y excepciones.
¿Hay alguna diferencia en Python también o no?
Warning
. Por favor vea mi respuesta .Creo que esta convención proviene de PEP 8 - Guía de estilo para código Python :
fuente
Python es bastante similar a Java a este respecto. Pero la excepción de Python debería compararse con Throwable de Java.
Como los Throwables vienen en todo tipo de sabores: Error, RuntimeException y Exception (marcada), también lo hacen Python (aunque no hay excepciones marcadas).
En cuanto al lenguaje, un Error es excepcional, por lo que la jerarquía de herencia no es extraña.
Sin embargo, no me gusta particularmente el nombre Exception. Las excepciones no solo se utilizan para circunstancias excepcionales (como con suerte Errores) sino también para salir del flujo de control. Porque eso es lo que hace una excepción; salta del flujo normal de control a un punto marcado. Un poco como un goto, pero más refinado.
Dicho esto, cada vez que tiene una situación en la que no se puede encontrar un valor de retorno adecuado, tiende a usar una excepción. Tanto en Python como en Java.
fuente
Error
en su nombre.Supongo que esto se debe a que la mayoría de las excepciones de Python se clasifican como errores o advertencias . Si los nombres de las excepciones de Python terminaran con
Exception
, esta distinción no sería posible.Algunos ejemplos de advertencias son
DeprecationWarning
yImportWarning
.Por favor, vea la jerarquía de clases de la 2.x para las excepciones internas , así como que para 3.x .
fuente
Simplemente pon:
Exception
se puede subir directamenteConcepto:
O
Esto normalmente sería un error, pero vamos a hacer una excepción, detectarlo y realizar algún procedimiento.
Detalles:
Excepciones vs errores:
https://docs.python.org/2/tutorial/errors.html
Flujo de trabajo:
fuente
Es solo nombrar. En Java, se
java.lang.Error
diferencia de otrosThrowable
mensajes de correo electrónico porque esos tipos de errores deben desmarcarse. En Python, todas las excepciones están desmarcadas, por lo que la distinción no tiene sentido.fuente
class ExceptionHandlingException extends RuntimeException
y eso es horrible de leer.