我已经写了这种方法

    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;
}

10-06 10:52