2013-04-12 2 views
0

Когда я получаю исключение в этом коде, я не знаю, почему сообщение об ошибке появляется дважды. Я попытаюсь объяснить это лучше: картинка стоит тысячи слов:Одно исключение Два сообщения

enter image description here

кто может мне помочь?

Спасибо в adavance!

+0

Если что-то появляется дважды, это, вероятно, называется дважды. Вы проверили с помощью отладчика, что код соединения вызывается только один раз? –

+0

сделал u проверить, почему ошибка брошена? –

+0

Сообщения разделяются (но не завершаются) с помощью '\ r \ n', поэтому в какой-то момент они склеены и выбрасываются. Возможно, «OdbcConnection» пытается предоставить дополнительные сведения об исключении, но получение этих данных дает другое исключение. –

ответ

1

На изображении вы можете увидеть новую строку между сообщением об исключении. В 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

Прежде всего спасибо, но жаль, что я не понимаю, что вы хотите сделать, (извините, что мой engligh не мой сильный момент) ... Хочешь ли я передать исключение из метода, который ты написали? Я не могу найти ODBC32 ... – MirlvsMaximvs

+0

Код, который я опубликовал, находится в коде 'System.Data.OdbcConnection'. Это часть структуры, и она показывает, как две ошибки могут появляться в одном объекте «Исключение». –

+0

Хорошо, но я не могу найти ODBC32 ... – MirlvsMaximvs

Смежные вопросы