在else和周围的catch块中抛出相同的异常

时间:2011-07-17 22:45:15

标签: exception exception-handling

我有一段代码,用于检查网络是否可用,以及计算机是否位于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包围,捕获相同的异常类型。

由于

1 个答案:

答案 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
}

这对您的情况有帮助吗?