オブジェクトからプロパティを取得し、pdfに値を設定するコードを記述しています。Dictionaryにキーが含まれていない場合は例外をスローすることはできますか
私は私の辞書からアイテムを取得するために使用するコードは以下の通りです:辞書がどのように見える
public static int? GetYPrintCoord(string word)
{
// Try to get the result in the static Dictionary
PrintCoord result;
if (Dict.TryGetValue(word, out result))
{
return result.Y;
}
else
{
return null;
}
}
:
Dictionary<string, PrintCoord> Dict = new Dictionary<string, PrintCoord>();
事は、私はヌルをチェックするのはうんざりだときGetYPrintCoord(string word)
が呼び出されます。実際には、辞書内の項目が存在しない場合、誤ったデータが含まれるため、pdf全体が生成する価値がありません。私は方法を変更する代わりに、考えていた:
public static int GetYPrintCoord(string word)
{
// Try to get the result in the static Dictionary
PrintCoord result;
if (Dict.TryGetValue(word, out result))
{
return result.Y;
}
else
{
throw new KeyNotFoundException();
}
}
これは悪い習慣ですか?例外を投げてクラッシュさせると、実際にはユーザーの方がずっと良くなるでしょう。なぜなら、少なくともユーザーは無効なpdfを見ず、それが無効であることを知らないかもしれないからです。キーが見つからない
PrintCoord result = Dict[word]; // is equivalent to your code.
場合は、例外がスローされます。あなたは、例外をスローする前に、いくつかのロギングを行う必要がない限り、あなたは車輪の再発明している
[CodeReview](http://codereview.stackexchange.com/) – Marusyk
に属しているため、この質問を議論の対象外としています:キーは辞書にあるべきですか?単純にアクセスする必要がある場合(下の図を参照) –
必要以上にコードを書くのはあなたですか?辞書にインデックスをつけて、KeyNotFoundExceptionをスローするのはなぜでしょうか?代わりに、あなたがその例外を発生させたくないので、その例外を投げるのを避けるように設計された代替アクセスメカニズム( 'TryGetValue')を使用しています。 –