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 の後、例外メッセージを返すようにステップを踏んでおり、正確な例外メッセージをログに記録していません

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 に答える