我從某處讀取永遠不應該使用錯誤條件作爲正常程序流的地方。對我來說意義非凡...但是如何在SQL Select返回Nothing時避免拋出錯誤
坐在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的部分。必須有更好的方法來處理這個問題。
如果任何人都可以幫助我,我真的很感激。
謝謝。
嗯......我沒有想到ToString()可能會拋出異常而不是抓取。我會給你一個鏡頭。 謝謝。 – EoRaptor013 2008-12-06 01:04:29
你是對的!它是.ToString()拋出異常。如果我把它關閉,請求返回一個對象,我可以測試它,並轉換爲字符串,如果不是null。 – EoRaptor013 2008-12-08 04:54:30