2011-07-17 2 views
0

ネットワークが利用可能かどうかをチェックし、マシンがADドメインにあるコードスニペットを持っています(チェックの場合は& &)。コインの反対側には、条件ごとにif if文があります。ここでは、使用できない場合に関連する例外をスローします(ドメインなどにマシンがないとは思わないが、これは通常のイベントではありません)。elseとその周辺のキャッチブロックで同じ例外がスローされました

問題は、競合状態です。私はいくつかの競争条件を経験したので、彼らは扱う価値がある。この場合、チェックの後、ネットワークがダウンしてコードがクラッシュすることがあります。そのため、catchブロックが必要です。しかし、catchブロックは、elseブロック(ドメインやネットワークに関係のないブロック)にスローされたものと同じタイプの例外をキャッチします。

これは(elseブロックとcatchブロックの同じ例外タイプ)コードの匂いか完全に良いコーディングですか?

EDITは:私のコードは、次のとおりです。

if (networkIsAvailable && MachineOnDomain) { } 
else if !(networkIsAvailable) { throw new networknotavailablexception... } 
else if !(machineNotOnDomain // you get the idea 

これは、同じ例外タイプを引く、のtry-catchに囲まれています。

try{ 
    int x = 1; 
    int y = 0; 
    int z = x /y; 
} 
catch(ArgumentNullException){ 
    //this will never be reached 
} 
catch(DivideByZeroException){ 
    // this code will be reached 
} 

でしょう、あなたのケースでは、このヘルプ:

おかげ

+0

これらのパターンは言語固有です。これは[tag:c#]ですか? – skaffman

+0

あなたのコードが例外をスローするのを恐れているのはなぜですか?必要なときにネットワークが利用できない場合は、何もしないでください。発信者に何をすべきかを決定させてください。 –

答えて

0

あなたは、例外の種類をキャッチすることができますか?

+0

こんにちは、コメントを参照してください。 – dotnetdev

+0

あなたが投稿したものが私に合法的なものであるように見えますが、失敗の条件ごとに違う例外を投げているのなら、私はおそらくそれらをif文で分けています。個人の好み。 –

関連する問題