tyl*_*hes 1 c# stringbuilder append try-catch
在我下面显示的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();
}
Run Code Online (Sandbox Code Playgroud)
我注意到如果我输入6个单词,其中3个应该正常工作,3个应该被catch语句捕获,catch语句只能捕获最后一个.知道为什么它只能抓住其中一个词吗?我喜欢它捕获所有这些并将它们全部添加到StringBuilder badData.
您确实不应该使用try/catch和exception机制来确定数据在这种普通情况下的有效性.这就是为什么它被称为"异常",因为它旨在处理可能导致程序崩溃的特殊情况.如果您希望某个百分比的输入无效,那么请对其进行普通的逻辑测试.
if (valid(word) {function(word);} else {addToErrorList(word);}
Run Code Online (Sandbox Code Playgroud)