Estou não estou conseguindo resolver os erros deste código abaixo:
public class TestExceptions {
public static void main(String[] args) {
String test = "no";
try
{
System.out.println("start try");
doRisky(test);
System.out.println("end try");
}
catch (ScaryException se)
{
System.out.println("finally");
}
System.out.println("end of main");
}
static void doRisky(String test) throws ScaryException
{
System.out.println("start risky");
if ("yes".equals(test))
{
throw new ScaryException();
}
System.out.println("end risky");
return;
}
}
Os erros gerados:
C:\Use a Cabeça\Capitulo 11\TestExceptions.java:18: cannot find symbol
symbol : class ScaryException
location: class TestExceptions
static void doRisky(String test) throws ScaryException
^
C:\Use a Cabeça\Capitulo 11\TestExceptions.java:11: cannot find symbol
symbol : class ScaryException
location: class TestExceptions
catch (ScaryException se)
^
C:\Use a Cabeça\Capitulo 11\TestExceptions.java:23: cannot find symbol
symbol : class ScaryException
location: class TestExceptions
throw new ScaryException();
^
3 errors
Estou lendo o livro Use a Cabeça e no Capítulo 11 que se trata da manipulação de exceções na pagina 234 tem esse código que eu postei.
Então quer dizer que o método “doRisky()” esta lançando uma exceção da classe ScaryException, Certo?
E no caso terei que criar esta classe? Pensei que esta classe existia.
Alguém ja leu o livro, poderia me da uma força para esse código compilar?
e a cláusula throw lança uma exceção. Ela deve ser sempre seguida de um objeto que extenda a classe Throwable.
mais um detalhe sobre exceptions. Todas as exceptions devem ser tratadas(exceptions checked) ( bloco try-catch ) ou relançadas ( adicionando a cláusula throws no método), exceto as exceptions que são subclasses da class RuntimeException(exceptions unchecked), que são exceções durante a execução da classe, como por exemplo as famosas exceptions ArrayIndexOutOfBounds e NullPointerException.
qualquer dúvida sobre quais exceptions são obrigatórias ser tratadas, dá uma olhada na hierarquia das exceptions…
dica: nunca trate exceptions que são filhas da classe Error, pois são erros gravíssimos, e praticamente impossível de se recuperar… sendo necessário reinicar a aplicação.