通常のプログラムフローとしてエラー条件を使用してはならないことをどこかで読みました。私には非常に理にかなっています...しかし
MySQL データベースの上にある C# アプリケーション。文字列値を ID と値の 2 つの部分に解析する必要があります。(元のデータはデボン紀のデータベースから取得されます)、ルックアップ テーブルに対して値を検証します。したがって、元の文字列のいくつかは次のようになります。
「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 をテストする部分。これを処理するためのより良い方法が必要です。
誰かが私を助けることができれば、本当に感謝しています。
ありがとう。