В моем примере try/catch, показанном ниже, приложение перебирает слова, введенные пользователем в текстовое поле. (Я уже убедился, что эта часть работает.) Когда он перебирает слова, он передает каждое слово функции, указанной ниже.
private string runQuery(string data)
{
// Step 1 - Declare the query and parameters
SqlCeConnection connection = new SqlCeConnection(@"Data Source=keywordDB.sdf");
SqlCeCommand cmd = new SqlCeCommand("SELECT abbrev, description FROM abbreviations WHERE abbrev LIKE @abbrev", connection);
cmd.Parameters.AddWithValue("@abbrev", data);
SqlCeDataReader reader;
try
{
// Step 2 - Opens the connection
connection.Open();
// Step 3- Execute query and assign the data to abbrevQueryResult and results
reader = cmd.ExecuteReader();
reader.Read();
abbrevQueryResult = reader[0].ToString();
results = reader[1].ToString();
// Step 4 compare abbrevQueryResult to data entered by user in textbox
if (abbrevQueryResult.ToLower().Equals(data.ToLowerInvariant()))
{
returnResults.Append(" " + results + ",");
}
}
catch (InvalidOperationException e)
{
badData = new StringBuilder();
badData.Append(" " + data);
}
finally
{
if (connection != null)
{
connection.Close();
}
}
return returnResults.ToString();
}
Я заметил, что если я ввожу 6 слов, 3 из которых должны работать нормально, а 3 должны быть пойманы оператором catch, то оператор catch поймает только самое последнее. Любая идея, почему он улавливает только одно из слов? Я бы хотел, чтобы он перехватил их всех и добавил в StringBuilder badData.