private void Add(StringBuilder buffer, Exception e, bool showStackTrace)
{
AddBlock(buffer, "EXCEPTION (" + e.GetType().Name + ")", 1);
AddBlock(buffer, e.Message);
ServiceResultException sre = e as ServiceResultException;
if (sre != null)
{
ServiceResult sr = new ServiceResult(sre);
while (sr != null)
{
AddBlock(buffer, "SERVICE RESULT (" + new StatusCode(sr.Code).ToString() + ")", 2);
string text = (sr.LocalizedText != null) ? sr.LocalizedText.Text : null;
if (text != e.Message)
{
AddBlock(buffer, text);
}
AddBlock(buffer, sr.SymbolicId);
AddBlock(buffer, sr.NamespaceUri);
if (showStackTrace)
{
if (!String.IsNullOrEmpty(sre.AdditionalInfo))
{
AddBlock(buffer, "ADDITIONAL INFO (" + new StatusCode(sr.Code).ToString() + ")", 3);
AddBlock(buffer, sre.AdditionalInfo);
}
}
sr = sr.InnerResult;
}
}
if (showStackTrace)
{
AddBlock(buffer, "STACK TRACE", 3);
AddBlock(buffer, e.StackTrace);
}
}