Suponha que o ObjetoA tenha um metodo statico chamdo de metodoA, que deve tratar a exceção exceptionA quando chamado, agora supondo que temos o ObjetoB, que seu construtor é private, ele é setado com ObjetoA.metodoA, como a seguir:
Abaixo que o erro é gerado, por que o objeto b ficou incializado dentro do bloco try, fora deste escopo ele não tem mais
referência.
b.qualquerCoisa();
Eu gostaria de saber como vocês usam normalmente, usam todos os metodos do b, dentro do try mesmo ou usam outro tipo de contrução? Tipo até pensei em fazer:
ObjetoB retornaB(){
try {
return ObjetoA.metodoA();
} catch(ExceptionA ex) {}
}
ObjetoB b = retornaB();
/*
aqui eu colocaria o resto do código.
*/
O primeiro caso eh o mais comum, levando em consideracao que ObjetoA.metodoA() vai criar um ObjetoB.
Se os metodos de “b” que vc vai chamar nao lancam exceptions, entao rode fora do try-catch mesmo, caso contrario seria legal deixar dentro do mesmo try-catch.
Uma coisa que voce nao pode fazer eh dar um catch vazio ( catch (Exception e() {} ), pois, se der erro, vc nao ficara sabendo. Eh importante tambem, no caso de voce chamar os metodos de “b” fora do try, verificar se a instancia foi criada corretamente ( no caso, se nao deu alguma exception, ou mesmo se o objeto nao eh nulo ), caso contrario vc ira levar um NullPointerException.
[quote=“Rafael Steil”]O primeiro caso eh o mais comum, levando em consideracao que ObjetoA.metodoA() vai criar um ObjetoB.
Se os metodos de “b” que vc vai chamar nao lancam exceptions, entao rode fora do try-catch mesmo, caso contrario seria legal deixar dentro do mesmo try-catch.[/quote]
Gera uma compile time error no primeiro caso, pois o objeto b só é inicializado no escopo do try, não tenho mais referência fora deste escopo
Foi só para exemplificar !!!
[quote=“Rafael Steil”]
Eh importante tambem, no caso de voce chamar os metodos de “b” fora do try, verificar se a instancia foi criada corretamente ( no caso, se nao deu alguma exception, ou mesmo se o objeto nao eh nulo ), caso contrario vc ira levar um NullPointerException.
[quote=“Rafael Steil”][quote=“phstc”]
Gera uma compile time error no primeiro caso, pois o objeto b só é inicializado no escopo do try, não tenho mais referência fora deste escopo
[/quote]
Eh soh declarar fora do try, inicializando pra null.
Rafael[/quote]
Ahhhhhhh entendi, maneiro, vou fazer assim, value!!!