Java excepciones: MyException excepción Nunca se lanza en el cuerpo de la correspondiente sentencia try
Pregunta
entiendo la idea de este error. Pero supongo que no entiendo cómo funciona esta abajo de la pila de llamadas.
Archivo Main.java:
public static void main(String[] args) {
try {
Function1();
} catch (myException e) {
System.out.println(e.getMessage());
}
}
public static void Function1() {
Function2();
}
Función2 existe en otro archivo:
File2.java
public void Function2() throws myException {
....
}
Así que a través de varias llamadas (abajo de la pila de llamadas) Tengo Función2 que especifica el requisito de "lanza MyException". ¿Cómo es que la función principal (donde el error está siendo dirigida a) no reconoce que lanzo MyException abajo de la línea?
Cualquier orientación en donde el 'agujero' en mis mentiras "conocimiento" excepción sería muy apreciada.
aitee,
Solución
El agujero es que Function2
declara que produce la excepción, pero Function1
no lo hace. Java no cavar su camino a través de posibles jerarquías de llamadas, sino que va directamente por lo que se declara en los estados throws
.
Function1
se sale con no declarar de banda probablemente porque es un myException
RuntimeException
.
Otros consejos
Su problema es que Function1()
no declara que throws myException
- lo que significa que no debe haber 2 errores de compilación:. Uno acerca de la excepción no ser atrapados o declarada, y uno por la captura de la excepción que no se declara