Dúvida com inicialização de um objeto!

Bom dia.

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:

ObjetoB b;
try {
  b = ObjetoA.metodoA();
} catch(ExceptionA ex) {}

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.
*/

Grato,
Pablo

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.

Rafael

[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 :wink:

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.

Rafael[/quote]

Eh soh declarar fora do try, inicializando pra null.

Rafael

[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 :wink:
[/quote]

Eh soh declarar fora do try, inicializando pra null.

Rafael[/quote]

Ahhhhhhh entendi, maneiro, vou fazer assim, value!!!