¿Son las excepciones causadas por el sistema operativo o el programa o el hardware?

Creo que es más útil pensar que las excepciones son causadas por las interacciones de hardware, sistemas operativos, aplicaciones y / o usuarios.

Considere una FileNotFoundException por ejemplo. Se podría decir que fue causado por el hardware ya que en el nivel más bajo de examen, se esperaba que la unidad de disco contuviera el archivo, pero no se encontró el archivo.

¿O fue el sistema operativo, que examinó los datos en el disco y decidió que el patrón de unos y ceros provenientes del disco no contenía lo que la aplicación pedía?

¿O fue la aplicación la que le pidió al sistema operativo que leyera datos de un archivo que en realidad no existe en el disco? Después de todo, el sistema operativo solo le dice a la aplicación que ha intentado hacer algo imposible.

¿O fue el usuario quien escribió mal un nombre de archivo? ¿O quién en el pasado podría haber eliminado un archivo que la aplicación quería leer hoy? ¿Qué sucede si el archivo fue eliminado por un usuario que no sea el usuario que quería leerlo?

En general, una excepción solo indica que las suposiciones de alguien no eran correctas. No siempre es obvio si el problema es una suposición irracional, o si alguien más (que podría no estar involucrado activamente en el momento de la excepción) hizo algo para invalidar una suposición perfectamente razonable.

Cualquiera de los tres puede contribuir a una excepción.


  1. Si el sistema de archivos del sistema operativo se arruinó …
  2. Si el sensor tiene algún problema de hardware en un dispositivo sensor de temperatura …
  3. Si un programa está mal escrito, por ejemplo: dividir entre 0 ..