Duvida exercicio exceção

10 respostas
evertonsilvagomesjav

Galera to com uma duvida neste exercicio tem como vcs me ajudarem?

Não sei onde esta a exceção e pq que ela ocorre:

package com.exercicio.certificacao.controledefluxo.excecao.assertiva;

public class Plane {

	static String s = "-";
	
	public static void main(String[] args) {
		
		
		new Plane().s1();
		
		System.out.println(s);
		
		
	}
	
	
	void s1(){
		
		try{
			
			s2();
			
		}catch (Exception e){
			
			s += "c";
			
		}
	
	}
	
	void s2() throws Exception{
		
		s3();
		s += "2";
		
		s3();
		s += "2b";
		
	}
	
	void s3() throws Exception{
		
		
		throw new Exception();
		
	}

}

10 Respostas

davidbuzatto
package com.exercicio.certificacao.controledefluxo.excecao.assertiva;

public class Plane {

	static String s = "-";
	
	public static void main(String[] args) {

                // ok, instancia Plane e chama s1
		new Plane().s1();

                // nesse ponto, s vai ter -c
		System.out.println(s);

	}
	
	
	void s1(){
		
		try{
			
                        // s2 vai lançar execessão que será capturada no catch
			s2();
			
		}catch (Exception e){
			
                        // concatena c no s
			s += "c";
			
		}
	
	}
	
	void s2() throws Exception{
		
                // chama s3 e a excessão lançada por s3 vai ser relançada
		s3();

                // daqui para baixo não será executado
		s += "2";
		
		s3();
		s += "2b";
		
	}
	
        // vai lançar execessão
	void s3() throws Exception{
		
		
		throw new Exception();
		
	}

}
evertonsilvagomesjav

David mas pq a exceção e lançada o que tem de errado?

sech777

método s1() chama método s2(), que por sua vez chama método s3(). O método s3() lança uma exceção, mas quem a manipula é o método s1(), pois o método s2() apenas a declara. Assim, quando o método s1() manipula a exceção, à variável “s” é concatenado o literal “c”. Por fim, a saída será: -c .

evertonsilvagomesjav

Eu entendi as questões de manipulação, eu nao estou entendendo o porque da exceção, sendo que uma exceção ocorre por algo “anormal” no codigo, por isso nao to entendo esse throw new Exception() no método s3().

alberto_ribeiro

Boa tarde, então se você entendeu as chamadas, vamos lá, uma exception pode ocorrer por algo anormal, mas, você pode fazer com que seja lançado uma exceção no momento em que você necessitar, o método s3 está lançando uma exceção de propósito, sempre que chamado vai lançar…
uma exceção pode ser lançado quando você necessitar como eu disse, um exemplo imagina que você tem um método que manipula divisões de números logo se receber algum parametro com o valor 0(zero), você pode no código forçar o lançamento de uma exceção informando que o valor não pode ser zero…

evertonsilvagomesjav

Alberto acho que entendi cara o que vc falou, nesse caso nao tem algo “anormal no codigo” mas o programdor forçou que quando o método s3() for chamado uma exceção sera lançada, é isso?

alberto_ribeiro

isso mesmo…

evertonsilvagomesjav

hum entendi cara muito obrigado, agora uma aplicabilidade de se forçar uma exceção eu nunca vi por isso me veio essa duvida pq sempre usei metodos que se tivesse algo anormal gerassem uma exceção, mas muito obrigado Alberto.

alberto_ribeiro

rlx… mas pode ter certeza que verá e muito…

evertonsilvagomesjav

hehe vllww!!

Criado 29 de novembro de 2009
Ultima resposta 29 de nov. de 2009
Respostas 10
Participantes 4