If there is an exception, you should propagate it and let another method handle the problem, this is not the correct way to deal with it. You'll have to deal with the problem, do it right or wrong.
If you want to insist, I think the best way is to create a class just for this (since Java does not give many facilities) whose members will be this list of products and the flag , there in return you deconstruct the class, that is, take each member and use it as you wish (plays in variable, uses if
, etc.).
Note that I disagree with each line of this solution but it would be something like this (the codes are not ready for use, it's just a general idea):
public class Resultado {
public boolean flag; //não faça isto, fiz só para simplificar
public listProdutos[] produtos; //prefira usar métodos de acesso get e set
public Resultado(listProdutos[] produtos, boolean flag) {
this.produtos = produtos;
this.flag = flag;
}
}
public Resultado getProdutosWS() {
try{
listProdutos[] produtos = ws.getProdutos(prod)
return new Resultado(produtos, true);
}catch(RemoteException ex){
return new Resultado(null, false);
}
}
public static main() {
Resultado lista = getProdutosWS();
if (lista.flag) {
System.out.println(lista.produtos[0]); //isto é só um exemplo de uso, nada que seja útil
}
}
The more I look at this, the more I find it strange. I think you should treat the exception, for this example, in main
, something like:
public AlgumMetodoConsumidor(TipoDoWS ws, TipoDoProd prod) {
try {
listProdutos[] lista = ws.getProdutos(prod)();
System.out.println(lista); //isto é só um exemplo de uso, nada que seja útil
} catch (RemoteException ex) {
//regra básica das exceções: você lida aqui com o problema porque é
//aqui que você consegue lidar com ele.
System.out.println("deu erro");
}
}
Alternative to not having to create a class specific to this. The advantage would be that the class Resultado
would be used for every place that needs to return a flag plus another return:
public class Resultado {
public boolean flag; //não faça isto, fiz só para simplificar
public Resultado(boolean flag) {
this.flag = flag;
}
}
public Resultado getProdutosWS(Resultado resultado) {
try{
listProdutos[] produtos = ws.getProdutos(prod)
resultado.flag = true;
return produtos;
}catch(RemoteException ex){
resultado.flag = false;
return null;
}
}
public static main() {
Resultado resultado;
listProdutos[] lista = getProdutosWS(resultado);
if (resultado) {
System.out.println(lista[0]); //isto é só um exemplo de uso, nada que seja útil
}
}
I placed GitHub for future reference .
On the other hand, I do not know if it would be enough to check if the list is null
. Of course, it depends on the situation.