Exception 在else和周围的catch块中引发相同的异常

Exception 在else和周围的catch块中引发相同的异常,exception,Exception,我有一段代码,检查网络是否可用,机器是否在AD域上(两个if签入&&configuration)。硬币的另一面,我对每个条件都有其他if语句。在这里,如果相关异常不可用,我会抛出相关异常(我不希望机器不在域上,等等,这不是一个常规事件等等) 问题是,比赛条件。我经历过一些比赛情况,所以它们值得处理。在这种情况下,检查之后,网络可能会崩溃,在这种情况下,代码将崩溃,因此我需要catch块。但是catch块将捕获与else块中抛出的异常类型相同的异常(那些与域或网络无关的异常) 这(else和cat

我有一段代码,检查网络是否可用,机器是否在AD域上(两个if签入&&configuration)。硬币的另一面,我对每个条件都有其他if语句。在这里,如果相关异常不可用,我会抛出相关异常(我不希望机器不在域上,等等,这不是一个常规事件等等)

问题是,比赛条件。我经历过一些比赛情况,所以它们值得处理。在这种情况下,检查之后,网络可能会崩溃,在这种情况下,代码将崩溃,因此我需要catch块。但是catch块将捕获与else块中抛出的异常类型相同的异常(那些与域或网络无关的异常)

这(else和catch块中的异常类型相同)是一种代码味道还是一种完美的编码


编辑:我的代码是这样的:

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
}

这对您的情况有帮助吗?

这些模式是特定于语言的。是吗?你为什么害怕代码抛出异常?如果网络在你需要的时候不可用,那就什么都不做——让你的来电者决定怎么做。如果你在每个故障情况下抛出不同的异常,你发布的内容对我来说似乎是一个合理的构造。。。。虽然我可能会把它们分开,因为它们之间并没有太多关系。个人偏好。