私はFoo()メソッドをいくつか苦労していますが、UIレイヤにはそのメソッドを呼び出すボタンがあります。
Foo()メソッドに問題がある場合、メソッドを呼び出してメッセージボックスを表示するだけです。例外()をスローするのではなく、タプル<bool、string>を返しますか?
:
1.Tuple
Tuple<bool, string> Foo()
{
if(!DoHardWorkA()) return Tuple.New(false, "cannot do hardwork A");
if(!DoHardWorkB()) return Tuple.New(false, "cannot do hardwork B");
return Tuple.New(true, String.Empty);
}
2.Exception
void Foo()
{
if(!DoHardWorkA()) throw new ProgramSpecificException("cannot do hardwork A");
if(!DoHardWorkB()) throw new ProgramSpecificException("cannot do hardwork B");
return Tuple.New(true, String.Empty);
}
両方DoHardWorkA()とDoHardWorkB()は、外部のメソッドであります私はそれらのコントロールを持っておらず、結果を示すtrue/falseを返します。
論理的には、実際の例外であるため、オプション2を使用する必要があります。しかし一貫性のために、私はオプション1に行きたいと思っています。
あなたはどれを好きですか、なぜですか?
で行くと思います。このC#のですか?あなたはあなたの質問にあなたが使っている言語でタグを付けるべきです。 – asawyer
重要な質問は次のとおりです:*例外的に非常にまれな、または共通ですか?*例外的に稀な場合は例外をスローしてから処理します*。障害が一般的である場合は、*障害の性質を報告するデータを返し、そのデータを他のデータと同様に処理します。 –