Excepción Java como excepción revisada pero no se requiere para ser lanzado en TryCatch

chiperortiz:

Tengo este fragmento.

public final class StackOverflow{
   class MyException extends Throwable{
   }
   private void a(){
       try{
       }catch(MyException | Exception e){
       }
   }
}
exception StackOverflow.MyException is never thrown in body of corresponding try statement

Sé que se está extendiendo excepción Throwable, así y también es una excepción comprobada también MiExcepción está extendiendo Throwable que también mades una excepción comprobada!

Mi pregunta es ¿por qué no se requiere Excepción para ser lanzado en el intento de captura, pero MiExcepción es? Creo que tanto se comprueban excepción por lo que es la diferencia ??

Lo siento si la pregunta es simple.

manouti:

Se explica en el lenguaje Java Especificación (subrayado en negrita):

Es un error en tiempo de compilación si una catchcláusula puede coger comprobado clase de excepción E1 y no es el caso de que el trybloque correspondiente a la catchcláusula puede lanzar una clase de excepción comprobado que es una subclase o superclase de E1, a no ser que E1 es Exceptiono una superclase de Exception.

Supongo que la razón detrás de esto es que: MyExceptiones de hecho una excepción comprobada. Sin embargo, las excepciones sin marcar, también se extienden Exception(herencia transitivo de RuntimeException), por lo que tiene un catchincluyen la Exceptionclase se excluyó del análisis excepción hecha por el compilador.

Supongo que te gusta

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