一个例外两个消息

时间:2013-04-12 14:40:03

标签: c# mysql ado.net

当我在此代码中出现异常时,我不知道为什么异常消息会出现两次。 我会尝试更好地解释一下:一张图片胜过千言万语:

enter image description here

任何人都可以帮助我吗?

谢谢你的支持!

1 个答案:

答案 0 :(得分: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);
}

显然,底层库会遇到相同的错误两次,然后向您抛出(一个)异常。

我不知道你能做些什么来防止这种情况,似乎你的代码没有任何问题。