Galera, tenho um método que retorna um List, dentro do try claro ele vai retornar certo, no catch é obrigatório também a retornar algo, queria saber se tem como deixar de retornar ou se tiver que retornar como vou retornar um List vazio
Não é verdade que o catch sempre tem que retornar algo. Se ele lançar uma exceção não tem que fazer return. Aquele código swing para dar uma mensagem ao usuário é que não deveria estar ali, e dai o problema. Ali deveria estar um throw e;
Também é discutivel só apanhar RuntimeException mas isso pode ser uma logica do seu programa por isso não digo nada.
NUNCA retorne null quando uma coleção é esperada. Retorne Collections.EMPTY_SET , Collections.EMPTY_LIST ou Collections.EMPTY_MAP conforme o caso. NUNCA crie um objeto de colecção vazia só para o poder retornar (algo como return new ArrayList()). Use SEMPRE as coleções vazias pre definidas pq são mais eficientes.
O controle de erro que mostra mensagem ao usuário deve ficar no método que chama este. E este deve lançar uma exceção se algo correu mal.
Só tem um problema com EmptyList, EmptySet e afins… elas não são coleções efetivas, elas não funcionam de verdade, então, caso quem recebe o retorno do metodo tente usar a coleção ela não vai funcionar…
ex.:
[code]public List meuMetodo(){
return Collections.EMPTY_LIST;
}
public void outroMetodo(){
List lista = meuMetodo();
if(lista.isEmpty()){
lista.add("meu objeto"); //Bang
}
}[/code]
Só tem um problema com EmptyList, EmptySet e afins… elas não são coleções efetivas, elas não funcionam de verdade, então, caso quem recebe o retorno do metodo tente usar a coleção ela não vai funcionar…
[/quote]
Mas fazer isso não é boa prática. Não faz sentido pedir a um método que retorne uma lista e depois adicionar mais elementos a ela! Pode até ser esse o contrato do método, mas ter métodos que fazem isso não é boa prática. (Não ha separação de responsabilidade nem encapsulamento)
Mas, se for realmente necessário, vc pode usar new ArrayList(outracoleção) ou list.addAll(outracoleção) que é muito mais simples e eficiente.