Java excepciones: MyException excepción Nunca se lanza en el cuerpo de la correspondiente sentencia try

StackOverflow https://stackoverflow.com/questions/4317643

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,

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top