递归函数不能用于获取最内层的异常消息

时间:2012-11-28 19:22:05

标签: java recursion exception-handling

我写过这个方法

    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而不记录确切的异常消息

1 个答案:

答案 0 :(得分: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;
}