En Java, las excepciones se organizan en una jerarquía que parte de la clase Throwable
, la cual se divide en dos ramas principales: Exception
y Error
. Las que heredan de Exception
pueden ser verificadas (como IOException
), lo que obliga a manejarlas con try-catch
o throws
, o no verificadas si derivan de RuntimeException
(como NullPointerException
), las cuales no requieren manejo obligatorio. Por otro lado, los errores (Error
), como OutOfMemoryError
, representan fallos graves del sistema que no se deben intentar controlar. Es fundamental entender esta jerarquía al usar try-catch
, ya que un catch
para una clase madre puede capturar excepciones de sus hijas, pero no al revés.