ネットワークが利用可能かどうかをチェックし、マシンが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
}
でしょう、あなたのケースでは、このヘルプ:
おかげ
これらのパターンは言語固有です。これは[tag:c#]ですか? – skaffman
あなたのコードが例外をスローするのを恐れているのはなぜですか?必要なときにネットワークが利用できない場合は、何もしないでください。発信者に何をすべきかを決定させてください。 –