我已经写了这种方法
private string FindInnerExceptionMessage(Exception ex)
{
string exceptionMsg = string.Empty;
if (ex.InnerException == null)
{
exceptionMsg = ex.Message;
}
else
{
ex = ex.InnerException;
FindInnerExceptionMessage(ex);
}
return exceptionMsg;
}
但是,在该FindInnerExceptionMessage之后,它正在一步步返回exceptionMsg而不是记录确切的异常消息
最佳答案
您实际上并未将递归调用的返回值分配给任何对象。结果,您的第一个调用将返回String.Empty
,因为FindInnerExceptionMessage(ex.InnerException)
的值从未分配为返回值(除非传递给第一个调用的异常没有内部异常,在这种情况下它将起作用)。尝试这样的事情:
private string FindInnerExceptionMessage(Exception ex)
{
string exceptionMsg = string.Empty;
if (ex.InnerException == null)
{
exceptionMsg = ex.Message;
}
else
{
exceptionMsg = FindInnerExceptionMessage(ex.InnerException);
}
return exceptionMsg;
}