我有以下代码:
protected string formatException(Exception e)
{
var exError = "<form>";
if (e == null)
{
throw new ArgumentNullException("e");
}
exError += "<fieldset><legend><a href='#'>" +
"<span class='show-expanded'>collapse message</span>" +
"<span class='show-collapsed'>expand message</span>" +
"</a></legend><p>" + e.Message + "</p></fieldset>";
exError += "<fieldset><legend><a href='#'>" +
"<span class='show-expanded'>collapse trace</span>" +
"<span class='show-collapsed'>expand trace</span>" +
"</a></legend><p>" + e.StackTrace + "</p></fieldset>";
if (e.InnerException != null)
{
// same functionality but for the inner exception and the InnerException.InnerException
}
return exError + "</form>";
}当被调用时,它会格式化异常消息。但是,我想让它包括InnerException和InnerException.InnerException
有没有什么方法可以递归地做这件事,或者将消息格式放在另一个函数中并调用它会更好?
发布于 2012-05-24 12:59:13
您的FormatException方法应该是这样的,不需要将exError变量声明为类级,在函数中声明它,然后返回..
protected string formatException(Exception e)
{
var exError = string.Empty;
if (e == null)
{
throw new ArgumentNullException("e");
}
exError += "<fieldset><legend><a href='#'>" +
"<span class='show-expanded'>collapse message</span>" +
"<span class='show-collapsed'>expand message</span>" +
"</a></legend><p>" + e.Message + "</p></fieldset>";
exError += "<fieldset><legend><a href='#'>" +
"<span class='show-expanded'>collapse trace</span>" +
"<span class='show-collapsed'>expand trace</span>" +
"</a></legend><p>" + e.StackTrace + "</p></fieldset>";
if (e.InnerException != null)
{
exError += formatException(e.InnerException);
}
return exError;
}你可以像这样调用这个函数,我希望它也适用于递归。上述方法的使用是
StringBuilder sb = new StringBuilder();
sb.Append("<form>");
sb.Append(formatException(new Exception()));// pass your own exception
sb.Append("</form>");
string strException = sb.ToString();在您的情况下,传递您自己的异常...
https://stackoverflow.com/questions/10731206
复制相似问题