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.
- ¿Cómo superan sistemáticamente las dotaciones universitarias superiores al mercado?
- ¿A muchos estudiantes se les paga para hacer una tesis de maestría?
- ¿Se les enseña a los estudiantes universitarios de historia del arte cómo escribir ensayos y análisis?
- Nueva Facultad de Humanidades: ¿Es este un desarrollo sostenible?
- ¿Cuál es una combinación apropiada de universidad mayor / menor o doble mayor para un aspirante a escritor técnico?
¿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.