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

4 respostas
P

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

4 Respostas

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.

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

P

“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.

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 !!!

“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

Rafael_Steil

Eh soh declarar fora do try, inicializando pra null.

Rafael

P

“Rafael Steil”:
“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:

Eh soh declarar fora do try, inicializando pra null.

Rafael

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

Criado 28 de junho de 2004
Ultima resposta 28 de jun. de 2004
Respostas 4
Participantes 2