una try todas que propagacion programador por manejo las lanzar excepciones excepcion ejemplos derivan creados como clase catch exception exception-handling error-handling

exception - try - ¿Por qué es mejor lanzar una excepción en lugar de devolver un código de error?



todas las excepciones en java (3)

Aquí hay un par de razones

  • Ignorar una excepción requiere una acción por parte del desarrollador, mientras que ignorar un valor de retorno incorrecto requiere exactamente 0 acciones. Esto, en teoría, hace que sea más probable que un desarrollador maneje un error en lugar de ignorarlo o que ni siquiera se dé cuenta de que estaba ocurriendo.
  • Proporciona una separación más limpia entre el punto de error y el manejo. No fuerza la propagación manual del error en todos los puntos intermedios.
  • Las excepciones pueden una carga útil de información más grande y más rica que un simple código de error. Hay maneras de hacer esto con los códigos de error, pero es más una idea de último momento y es un poco engorroso.

El manejo de errores heredados tiende a seguir el método de que todas las funciones devuelven un código dependiendo del éxito / fracaso. Usted verificará este código y manejará (si es un error) de manera apropiada.

Sin embargo, los lenguajes de programación modernos siguen el modelo de excepción, donde, si ocurre algo excepcional que no se puede manejar adecuadamente, se lanza una excepción, que sigue creciendo hasta su manejo.

Mi pregunta es ¿por qué nos hemos movido hacia el modelo de excepción ? ¿Cuáles son las razones detrás de esto? ¿Por qué es mejor?

Las explicaciones / enlaces serían muy apreciados.


He escrito sobre esto en detalle: Excepciones contra devoluciones de estado , pero brevemente:

  1. Las excepciones dejan su código limpio de todas las verificaciones necesarias cuando se comprueba el estado de cada llamada.
  2. Las excepciones le permiten usar el valor de retorno de las funciones para los valores reales,
  3. Las excepciones pueden llevar más información que una declaración de estado,
  4. Lo más importante es que las excepciones no se pueden ignorar a través de la inacción, mientras que las devoluciones de estado sí pueden.

Para expandir el último punto: si olvida hacer lo que debería hacer con las declaraciones de estado, ignore los errores. Si se olvida de hacer lo que debería hacer con excepciones, la excepción se refleja en la capa exterior del software donde se hace visible.


Los códigos de estado suelen ser mejores que las excepciones en los casos en que representan casos que el código de llamada inmediata de una función está preparado para manejar. El problema con los códigos de estado es que si el código de llamada inmediata no los maneja, es probable que nada lo haga. Si el código lanza una excepción y el código de llamada inmediata no está preparado para manejarlo, la excepción se propagará a un código que, al menos, dice estar preparado.