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.
Warning
. Por favor vea mi respuesta .