Controle do Fluxo

8 respostas
peresjuliao

Olá Pessoal,

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

Process completed.

Alguém pode me dar uma luz??

Abraços

8 Respostas

M

Provavelmente a classe ScaryException simplesmente não existe…

peresjuliao

Alquem poderia me explicar qual é o papel de “throws”?

brunoonurbgyn

throws lança uma exceção, lança um ERRO.

LPJava

vc importou a class ScaryException e extendeu a ela? pelo visto ela nao faz de uma excecao nao verificada…

quando vc usa o throws vc diz que ali lanca uma excecao do tipo …

throws tipo_da_excecao

flw!

peresjuliao

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?

LPJava

extenda a class ScaryException

class suaclass extends ScaryException

flw!

J
a class ScaryException simplesmente não existe... crie ela... exemplo
public class ScaryException extends Exception{
    
}

ou ainda...

public class ScaryException extends Exception{
    
    public ScaryException(){
    	super("ScaryException Lançada!");
    }
}

ai você pode sobrescrever os métodos da class Exception a vontade...:D

expero que tenha ajudado...

[]´s

J

ah... e com relação a throws...

a palavra reservada throws pode ser usada apenas em métodos, e indica que este método pode lançar uma exceção, do tipo da(s) exceção(ões) declaradas.

public void method()throws IOException,Exception,SQLException{

}

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.

a hierarquia básica é

Throwable
____|____
| |
Error Exception
|
RuntimeException

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.

[]´s

Criado 31 de dezembro de 2008
Ultima resposta 10 de jan. de 2009
Respostas 8
Participantes 5