Try catch

ola,

Tenho uma dúvida com relação ao try catch. Se eu tenho um método A que executa o metodo B, estes estão em classes diferentes, ocorrendo uma exeção no método B o método A tambem deve cair no catch?

Acho que eu entendi o meu problema, como o metodo B tambem executa dentro de um try catch, e a exceção ja esta sendo tratada la, no metodo A ele não gera exceção. É isto?

Tem como, mesmo eu tratando no metodo B, eu retornar a exceção para o A?

Sempre é bom tratar as exceções e respondendo a sua resposta é sim pois foi chamado o método que apresenta uma exceção.

Olá,

[quote=rpassos81]
Tem como, mesmo eu tratando no metodo B, eu retornar a exceção para o A?[/quote]

Sim, você pode lançar a mesma exceção no bloco catch. Por exemplo:

void metodoB() throws Exception {
    try {
        // algum código que dispara uma exceção...
    } catch (Exception e) {
        // Faço alguma coisa com a exceção e repasso
        throw e;
    }
}

[ ]'s

certo, porem o meu metodo possui um retorno, ai acho que ele não esta conseguindo retornar o meu retorno e tambem a exceção.

Quando eu passo o método B para void ai sim ele retorna a exceção para o A.

[quote=rpassos81]certo, porem o meu metodo possui um retorno, ai acho que ele não esta conseguindo retornar o meu retorno e tambem a exceção.

Quando eu passo o método B para void ai sim ele retorna a exceção para o A.[/quote]

Uma exceção interrompe o fluxo de execução do método no ponto em que foi disparada. Então se você estiver com algo como:

String metodo() throws Exception {
    try {
       // dispara uma exceção
    } catch(Exception e) {
       // faz alguma coisa
       throw e;
    }
    
    return "terminou";
}

Se uma exceção for disparada, o método não vai executar até o ‘return’.

[ ]'s

Consegui fazer o retorno, eu esta passando um retorno do metodo no finally, por isto estava indo o retorno e não ia a exceção. Obrigado!