我有一個代碼片段,檢查網絡是否可用,並且一臺機器在AD域(如果檢查& &配置中有兩個)。硬幣的另一面,我還有每個條件的陳述。在這裏,如果它們不可用,我會拋出相關的異常(我不希望機器不在域等等,這不是例行事件等)。拋出其他和周圍catch塊相同的異常
問題是,競爭條件。我經歷了一些競爭條件,所以他們值得處理。在這種情況下,檢查之後,網絡可能會停止運行,在這種情況下代碼會崩潰,所以我需要catch塊。但是,catch塊將捕獲與else塊中拋出的異常類型相同的異常(與沒有域或網絡相關的異常)。
這是(在else和catch塊中的相同異常類型)代碼味道還是完美的良好編碼?
編輯:我的代碼是這樣的:
if (networkIsAvailable && MachineOnDomain) { }
else if !(networkIsAvailable) { throw new networknotavailablexception... }
else if !(machineNotOnDomain // you get the idea
這是由一個try-catch包圍,捕捉相同的異常類型。
感謝
這些模式是特定於語言的。這是[標籤:C#]? – skaffman
你爲什麼害怕讓你的代碼拋出異常?如果網絡在您需要時無法使用,那麼請不要做任何事 - 讓您的呼叫者決定要做什麼。 –