¿Por qué se permitió la captura de un subtipo excepción lanzada en Java

Mrbel:

He leído en un libro de Java, que "Java no permitirá que usted declare un bloque catch para un tipo de excepción comprobada que no pueden potencialmente ser arrojado por el cuerpo de la clase probarlo".

Eso tiene sentido hasta ahora.

Pero ahora me pregunto por qué este código hace de compilación:

    try {
        throw new Exception();
    } catch (IOException e) {
    } catch (Exception e) {
    }

Java permite que coja el IOException, pero es obvio que no será lanzado por el try-bloque.

No este ejemplo romper la regla descrita en el libro de Java?

Maurice Perry:

Es obvio para un programador que lee el código, pero supongo que el compilador se ocupará de la throwdeclaración de la misma manera se trataría de una llamada a un método declarado como lanzar Exception, y en este caso, la excepción lanzada podría muy bien ser una IOException.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=222599&siteId=1
Recomendado
Clasificación