我有一段代码,用于检查网络是否可用,以及计算机是否位于AD域(如果检入&&配置,则为2)。硬币的另一面,我还有其他每个条件的陈述。在这里,如果它们不可用,我会抛出相关的异常(我不希望机器不在域上等,这不是常规事件等)。
问题是,竞争条件。我经历过一些比赛条件,所以值得处理。在这种情况下,检查后,网络可能会关闭,在这种情况下代码将崩溃,所以我需要catch块。但是,catch块将捕获与else块中抛出的异常相同类型的异常(与没有域或网络相关的异常)。
这是(在else和catch块中的相同异常类型)代码味道还是非常好的编码?
编辑:我的代码就是这样:
if (networkIsAvailable && MachineOnDomain) { }
else if !(networkIsAvailable) { throw new networknotavailablexception... }
else if !(machineNotOnDomain // you get the idea
这是一个try-catch包围,捕获相同的异常类型。
由于
答案 0 :(得分:0)
您可以捕获不同类型的例外:
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
}
这对您的情况有帮助吗?