PEGAR DADOS DE EXCESSÃO

LUIS.HERRERA 07/08/2014 07:26:26
#440245
Bom dia.
Fiz a rotina abaixo para pegar os dados de uma exceção, porém ao exibir os dados eles ficam [Ô]Bagunçados[Ô], dificultando sua legibilidade e análise. Além disso não encontrei uma opção para pegar o número do erro gerado, isso ainda existe no Dot.net para saber qual o tratamento correto executar?

Alguém saberia se há como melhorar a identificação do erro no código abaixo, de modo a organizar o resultado dos dados obtidos de modo mais legível:

public static string MontaDadosDaExcecao(Exception ex, string myTextoAviso)
{
StringBuilder str = new StringBuilder();
str.AppendLine([Ô]ERRO Em Try... Catch.[Ô]);
str.AppendLine(myTextoAviso);
str.AppendLine([Ô]*********************************************************************************[Ô]);
str.AppendLine([Ô][Ô]);
str.AppendLine([Ô]ToString() : [Ô] + ex.ToString());
str.AppendLine([Ô]Message : [Ô] + ex.Message);
str.AppendLine([Ô]Source : [Ô] + ex.Source);
str.AppendLine([Ô]HelpLink : [Ô] + ex.HelpLink);
str.AppendLine([Ô]TargetSite : [Ô] + ex.TargetSite);
str.AppendLine([Ô]Inner Exception: [Ô] + ex.InnerException);
str.AppendLine([Ô]Stack Trace : [Ô] + ex.StackTrace);
str.AppendLine([Ô]Data : [Ô]);
if (ex.Data != null)
{
// precisa de using System.Collections;
foreach (DictionaryEntry de in ex.Data)
{
str.AppendLine([Ô]Chave: [Ô] + de.Key + [Ô] - Valor: [Ô] + de.Value);
}
}
return str.ToString();
}
FFCOUTO 07/08/2014 08:57:05
#440247
Olá Luís,

Não tenho certeza, mas para pegar o número do erro tem de usar a propriedade HResult.
Já a linha do erro precisa usar outra classe: StackTrace
Abaixo segue o código para criar uma extensão para a classe Exception.

static class ExceptionHelper
{
public static int LineNumber(this Exception e)
{
int ln = 0;

try { ln = Convert.ToInt32(e.StackTrace.Substring(e.StackTrace.LastIndexOf([Ô]:line[Ô]) + 5)); }
catch { }

return ln;
}
}


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