我在某处读到,永远不应该将错误条件用作正常的程序流程。对我来说很有意义......但是
位于 MySQL 数据库之上的 C# 应用程序。我需要将一个字符串值解析为两部分,一个 ID 和一个值。(原始数据来自泥盆纪数据库),然后根据查找表验证该值。因此,一些原始字符串可能如下所示:
《6776紫食人》
“BIK 黄色波点比基尼(正在使用中)”
“DCP平分政变”
所以,我的小工具根据第一个空格的索引(幸运的是,一致)将每个字符串解析为 ID 和描述。然后我将 ID 传递给查找,获取新值,然后我们就走了。
不幸的是,TPTB 还决定我们不再需要臭黄色波点比基尼(目前正在使用)。因此,BIK 不会返回一行。这是一个代码片段:
foreach (string product in productTokens) {
tempProduct = product.Trim();
if (tempProduct.Length > 0) {
if (tempProduct.Length < 10) {
product_id = tempProduct;
}
else {
int charPosition = tempProduct.IndexOf(" ");
product_id = tempProduct.Substring(0, charPosition);
}
try {
s_product = productAdapter.GetProductName(product_id).ToString();
}
catch (Exception e) {
if (e.Message.ToString() == "Object reference not set to an instance of an object.") {
s_product = "";
}
else {
errLog.WriteLine("Invalid product ID " + e.Message.ToString());
Console.WriteLine("Invalid product ID " + e.Message.ToString());
throw;
} //else
} //catch
if (s_product.Length > 0) {
sTemp = sTemp + s_product + "; ";
}
} //if product.length > 0
} //foreach product in productTokens
真的,真的很丑!特别是我在 catch 块中测试无效 ID 的部分。必须有更好的方法来处理这个问题。
如果有人可以帮助我,我将不胜感激。
谢谢。