使用递归方法从C#异常对象中获取最后一条内部消息

nae*_*aif 0 c# recursion

我想使用递归调用获取最后一条内部 exception消息 。这里的要求是使用递归函数。我正在尝试这样做,但是我认为这没有什么问题。这是我的代码

    public static string GetFirstOccuredExceptionMessage(Exception ex)
    {
        string message ="";

        if (ex != null)
        {            
            if (ex.InnerException == null)
            {
                message  = "";
            }
            else
            {
              message = GetFirstOccuredExceptionMessage(ex.InnerException);
            }
        }

        return message; 
    }
Run Code Online (Sandbox Code Playgroud)

当我期望如果返回某些消息时,我会不断得到空字符串ex != null

Dmi*_*nko 5

你总是返回一个空字符串 -请注abscenceex.Message。像这样:

public static string GetFirstOccuredExceptionMessage(Exception ex) {
  if (null == ex)                     // no exception -
    return "";                        //   we return an empty string
  else if (null == ex.InnerException) // exception with no inner one - 
    return ex.Message;                //   time to return the message
  else                                // exception which has deeper one - 
    return GetFirstOccuredExceptionMessage(ex.InnerException); // level down
}
Run Code Online (Sandbox Code Playgroud)

或转向运算符

public static string GetFirstOccuredExceptionMessage(Exception ex) =>
   ex == null                ? "" 
 : ex.InnerException == null ? ex.Message 
 : GetFirstOccuredExceptionMessage(ex.InnerException);
Run Code Online (Sandbox Code Playgroud)