2014-09-22 9 views
5

başarısız. Bu nedenle, SomeSaferMethod'un yakalama ifadesinde de başarısız olması durumunda aramak istediğim SuperSafeMethod adlı bir yöntem oluşturdum.try catch hem Şöyle bazı kod var

Deneme yakalamamı nasıl değiştirebilirim, böylece hem SomeDangerousMethod hem de SomeSaferMethod başarısız olursa tetikleyen üçüncü yürütme düzeyi başarısız olur?

Teşekkürler.

+0

Yöntemin başarısız olmasını bekliyorsanız, bu durumda istisnaları hiç kullanmayın. Bunun yerine 'null' döndür. Daha sonra, bir önceki "null" 'i döndürdüyse sonraki güvenli yöntemi çağırınız. – Henrik

cevap

12

Belki try/catch kullanılabilir iç içe: Sen yapabilirdi

try 
{ 
    TheString = SomeDangerousMethod(); 
} 
catch 
{ 
    try 
    { 
     TheString = SomeSaferMethod(); 
    } 
    catch 
    { 
     TheString = SuperSaferMethod(); 
    } 
} 

return TheString; 
+0

Ah güzel, sen yuva yapabileceğini bilmiyordum; Cevap için teşekkürler. – frenchie

6

iç içe önlemek için aşağıdaki. Bu, daha temiz bir şekilde, istediğiniz kadar çok yöntem kullanmanıza olanak tanır.

Func<string>[] methods = { SomeDangerousMethod, SomeSaferMethod, SuperSafeMethod }; 

foreach(var method in methods) 
{ 
    try 
    { 
     TheString = method(); 
     break; 
    } 
    catch { } 
} 

if (string.IsNullOrEmpty(TheString)) 
    throw new TooMuchUnsafetyException(); 
İlgili konular