2013-04-12 46 views
0

當我在此代碼中遇到異常時,我不知道爲什麼異常消息出現兩次。 我會試着更好地解釋它:一張圖片勝過千言萬語:一個例外兩條消息

enter image description here

誰能幫助我?

非常感謝!

+0

如果出現兩次,可能會調用兩次。你用調試器檢查過,連接代碼只調用一次嗎? –

+0

是否檢查過錯爲什麼會引發? –

+0

這些消息是用'\ r \ n'分隔的(但不是終止的),所以它出現在某些時候,它們粘在一起並拋出。也許'OdbcConnection'試圖提供有關異常的更多細節,但是獲取這些細節會帶來另一個例外。 –

回答

1

在圖像中,您可以看到Exception消息之間的換行符。在OdbcConnection類中,CreateException()方法處理錯誤的OdbcErrorCollection,並用Environment.NewLine一起膠水它們(代碼從.NET 4.0 System.Data):

internal static OdbcException CreateException(OdbcErrorCollection errors, ODBC32.RetCode retcode) 
{ 
    StringBuilder stringBuilder = new StringBuilder(); 
    foreach (OdbcError odbcError in errors) 
    { 
    if (stringBuilder.Length > 0) 
     stringBuilder.Append(Environment.NewLine); 
    stringBuilder.Append(Res.GetString("Odbc_ExceptionMessage", (object) ODBC32.RetcodeToString(retcode), (object) odbcError.SQLState, (object) odbcError.Message)); 
    } 
    return new OdbcException(((object) stringBuilder).ToString(), errors); 
} 

顯然底層庫運行到相同的錯誤的兩倍,然後拋出(一)例外給你。

我不知道是否有什麼可以做的,以防止這種情況,它似乎沒有任何錯誤您的代碼。

+0

首先感謝但抱歉,我不明白你想要我做什麼,(抱歉我的英格利德不是我的強項)...你想讓我把例外通過你寫的方法嗎?我找不到ODBC32 ... – MirlvsMaximvs

+0

我發佈的代碼來自'System.Data.OdbcConnection'代碼。它是框架的一部分,它顯示了兩個錯誤如何出現在一個「Exception」對象中。 –

+0

好吧,但我找不到ODBC32 ... – MirlvsMaximvs