2012-11-28 90 views
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,而不是記錄確切異常消息

+0

我想我可能是錯的,但不是這個C#代碼?該線程用java標記。 – BigTFromAZ

回答

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

ooops,謝謝你:) – Shabana

+0

不要忘記接受;) –