VERIFICAR SE UM ARQUIVO XML SER? DESSERIALIZADO.

MRSILVA 29/11/2017 14:34:05
#478143
Olá.

Queria verificar se um arquivo XML será desserializado, ou seja, se não vai me da erro, fiz uma função booleana que era para me retornar falso caso algum erro acontecer só que erro não cai na minha exception, fica parado onde o erro acontece, fiz algumas alterações nos tipos de exception más não consegui. Existe uma forma melhor de fazer esse teste?

Desde já agradeço qualquer ajuda.

Segue abaixo minha função:

 public bool VerificaDeserializarNFe(string caminho)
{

try
{


XmlSerializer ser = new XmlSerializer(typeof(nfeProc));
nfeProc ret = new nfeProc();
TextReader txtReader = (TextReader)new StreamReader(caminho);
XmlTextReader read = new XmlTextReader(txtReader);
//read.ReadToFollowing([Ô]item[Ô])

read.Read();


ret = (nfeProc)ser.Deserialize(read);



txtReader.Close();


return true;

}
catch (Exception)
{

return false;

}

}
JABA 30/11/2017 15:15:26
#478172
Resposta escolhida
Evite fazer desta forma, pois tratamento de erro é para tratar erro. Use um try-catch ao chamar essa função, se der erro, tu saberá que o retorno foi falso.

try {
VerificaDeserializarNFe(string caminho);
}
catch() {
// tratamento
}



public void VerificaDeserializarNFe(string caminho)
{
try
{
XmlSerializer ser = new XmlSerializer(typeof(nfeProc));
nfeProc ret = new nfeProc();
TextReader txtReader = (TextReader)new StreamReader(caminho);
XmlTextReader read = new XmlTextReader(txtReader);
//read.ReadToFollowing([Ô]item[Ô])

read.Read();

ret = (nfeProc)ser.Deserialize(read);

txtReader.Close();

}
catch (Exception)
{
throw;
}
}

Tópico encerrado , respostas não são mais permitidas