Duvida com Retorno

iaew pessoal blz…

tava fazendo um codigo aqui e constatei uma coisa diferente… segue:

[code]
public class A {

public static void main (String [] args) throws Exception{

String str = new A().retorno();

}

public String retorno() throws Exception{
// aqui da erro de compilação
if( true ){
return go();
}else{
// para rodar teria q colocar um return aqui tambem…
}

// ou colocar um return aqui…

}

public String go(){
return “ok”;
}

}[/code]

isso da um erro de compilação pq o return esta dentro de um if…
agora se vc fazer assim…

[code]
public class A {

public static void main (String [] args) throws Exception {

String str = new A().retorno();

}

public String retorno() throws Exception{

if( true ){
return go();
}else{
throw new Exception();
}

// ele não precisa ter outro return

}

public String go(){
return “ok”;
}

}[/code]

esse aqui compila ele considera o throw como um retorno (de fato ele retorna)…
nunca tinha me deparado com uma situação dessas…

essa e a classe q eu estava fazendo e fiquei surpreso qnd não deu erro…

public class FindController implements OperationControllerIfc {

    private StrategyFindIfc strategyFind = null;

    @Override
    public Object executeOperation(Map<String,Object> dadosView) throws Exception {
        String source = String.valueOf(dadosView.get("SOURCE"));
        
        if(ConfigIfc.USUARIO.equals(source))
            strategyFind = new UsuarioStrategy();     

        if(null != strategyFind){
            return strategyFind.executeFind(dadosView);
        }else{
            throw new Exception("Não foi possivel determinar o tipo de Operação.");
        }

    }

}

sera q esse tipo de coisa cai no exame?
algum de vcs ja havia se deparado com o cod acima?

olá,

A nível de exame, esse último código que você postou eu acho improvável de cair.

Primeiro que tem um alto grau de legibilidade (pelo menos para mim). Até eu tentar decifrar para saber o que essa classe executa vai um certo tempo.

Com relação ao dois primeiros, são códigos simples, com chances de cair questões deste tipo, mas percebe que pela simplicidade do código é preciso ter um certo grau de atenção, porque se bobear assinala opção errada.

ta ok !!!

Espero ter respondido a sua dúvida

Ricardo

Olá Jeferson,

no meu exame não apareceu esse tipo de questão. Caso no seu venha a aparecer vc já sabe o comportamento do código. Uma boa prática nos estudos para a certificação é testar códigos e mais códigos afim de eliminar o máximo possível os comportamentos “desconhecidos” e “inesperados”, porque nem todos os comportamentos estarão explícitos nos livros de preparação para o exame.

Att.

javadev.

Pelo menos esse eu já não erro mais XD