Я где-то читал, что никогда не следует использовать условия ошибки как обычный программный поток. Отличный смысл для меня ... НоКак избежать опрокидывания ошибки, когда SQL Select возвращает ничего
Приложение C#, сидящее на вершине MySQL db. Мне нужно разобрать строковое значение на две части, идентификатор и значение. (Исходные данные поступают из базы данных Devonian), затем проверяйте значение по таблице поиска. Так, несколько оригинальных строк может выглядеть следующим образом:
"6776 Фиолетовый People Eater"
"БИК желтый горошек бикини (в настоящее время используется)"
"DCP Deuce Coup"
Итак, моя маленькая утилита анализирует каждую строку в идентификаторе и описании, основанном на индексе первого пространства (к счастью, соответствует). Затем я передаю идентификатор поиску, получаю новое значение, и мы уходим.
К сожалению, TPTB также решил, что мы больше не нуждаемся ни в каком stinkin 'Yellow Polka-Dot Bikinis (в настоящее время используется). Таким образом, 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
Действительно, действительно уродливый! В частности, часть, где я тестирую недопустимый IDin в блоке catch. Там просто должен быть лучший способ справиться с этим.
Если кто-нибудь может мне помочь, я бы очень признателен.
Спасибо.
Хмм ... Мне не пришло в голову, что ToString() может вызывать исключение, а не выборку. Я сделаю это. Спасибо. – EoRaptor013 2008-12-06 01:04:29
Вы были правы! Это было исключение .ToString(). Если я оставлю это, запрос возвращает объект, и я могу проверить его и преобразовать в строку, если не null. – EoRaptor013 2008-12-08 04:54:30