1

我写了这个方法

    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 并且没有记录确切的异常消息

4

1 回答 1

1

您实际上并没有将递归调用的返回值分配给任何东西。结果,您的第一次调用将返回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;
}
于 2012-11-28T19:25:27.860 回答