ericrf:
Olá pessoal tenho um bloco de código q pode jogar uma exception
o XStream.toXML() pode jogar a exception
public String geraXML(ListaDeNoticiasPerfil listaDeNoticiasPerfil){
//instacia XStream
XStream x = new XStream(new DomDriver());
x.autodetectAnnotations(true);
//parse xml
String xml;
xml ="<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n";
xml+= x.toXML(listaDeNoticiasPerfil);
//return String XML
return xml;
}
e eu queria saber se eu usar assim eu posso resgatar essa e.
private String criarXMLEIncluirTransferenciaNoticia(ListaDeNoticiasPerfil lista, int cdCliente,String username,String password){
// instanciando GeradorDeXML
GeradorDeXML geradorDeXML = new GeradorDeXML();
//preparando String para retorno
String retorno;
try {
//gerando xml
retorno = geradorDeXML.geraXML(lista);
//Armazenando XML
geradorDeXML.gravarXML(retorno, GeradorDeData.getData("BDHP"), cdCliente+"-"+username+"");
//incluindo dados na tabela transferencia noticia
TransferenciaNoticiaController transferenciaNoticiaController = new TransferenciaNoticiaController();
transferenciaNoticiaController.inserir(lista, cdCliente);
} catch (XStreamException e) {
retorno = "Erro na geração do XML";
}
return retorno;
}
1 - Não.
Embora você tenha o código que está dentro do catch sendo executado, o fato de atribuir o valor da variável retorno como sendo a mensagem de erro não significa que você tratou a exceção.
Eu prefiro tratar as exceções em dois tipos, as que estão em um ponto de contato direto com o usuário (telas) e as que não estão (camada de controle, serviços ou modelo).
Quando estão direto em contato com o usuário, eu simplesmente trato imediatamente, com um try/catch, no catch eu capturo log de erro e apresento uma mensagem ao usuário.
Quando a exception pode ser lançada de um ponto que não está diretamente em contato com o usuário, eu trato com o throws na assinatura do método e, além disso, faço um try/catch caso queira personalizar a mensagem:
private String criarXMLEIncluirTransferenciaNoticia(ListaDeNoticiasPerfil lista, int cdCliente,String username,String password) throws XStreamException {
// instanciando GeradorDeXML
GeradorDeXML geradorDeXML = new GeradorDeXML();
//preparando String para retorno
String retorno;
try {
//gerando xml
retorno = geradorDeXML.geraXML(lista);
//Armazenando XML
geradorDeXML.gravarXML(retorno, GeradorDeData.getData("BDHP"), cdCliente+"-"+username+"");
//incluindo dados na tabela transferencia noticia
TransferenciaNoticiaController transferenciaNoticiaController = new TransferenciaNoticiaController();
transferenciaNoticiaController.inserir(lista, cdCliente);
} catch (XStreamException e) {
log.severe(e.getMessage());
throw new XStreamException("Erro na geração do XML");
}
return retorno;
}