Estou estudando o tratamento de exceções para OCJP e me ocorreu uma dúvida, na verdade um esclarecimento, na documentação java constam como filhas de Exception:
class java.lang.ClassNotFoundException
class java.lang.CloneNotSupportedException
class java.lang.IllegalAccessException
class java.lang.InstantiationException
class java.lang.InterruptedException
class java.lang.NoSuchFieldException
class java.lang.NoSuchMethodException
class java.lang.RuntimeException
As únicas classes verificadas pelo compilador java são estas, exceto a RuntimeException? Pergunto isso em relação a toda a árvore, desde Throwable.
Achei estranho, pois pensei que existiam muito mais classes verificadas "/
[quote=gRoOve]Entendi, obrigado.
Outra coisa, eu gostaria de simular algum código que lance uma exceção verificada, sem usar a cláusula throw, tem como? Algo assim:
void metodo() throws ExceptionChecked {
// algum código que gere uma ExceptionChecked
}
[/quote]
Você precisa da cláusula throw veja esse exemplo:
public class UsingExceptions3 {
public static void main(String[] args){
UsingExceptions3 usingExceptions3 = new UsingExceptions3();
try {
usingExceptions3.lancaException();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MyTestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void lancaException() throws NoSuchMethodException, MyTestException {
System.err.println("Lança exption");
throw new MyTestException("Error");
}
MyTestException
public class MyTestException extends Exception{
public MyTestException(String msg) {
super(msg);
}
}
Veja q quando eu dou um “throw new MyTestException(“Error”);” eu sou obrigado a declarar a clausula throws no metodo porque essa classe é “checked” ou seja extende da classe Exception e só assim tratar a exception com try/catch.