2016-04-12 30 views
0

Bu kodu, özel durumların nasıl ele alınacağını açıklayan bir PushSharp örneğinden aldım. Bazı nedenlerle, else koşullarının tümü, The expression is always false belirtilerek Resharper tarafından grileştirilir. Bunun nasıl mümkün olduğunu göremiyorum.Resharper,/else koşulu asla vurulmayacağını belirtir, neden?

// ex is an Exception passed in to the method 
if (ex is NotificationException) 
{ 
    // Deal with the failed notification 
    var notification = ((NotificationException)ex).Notification; 
    var logItem = new PushLog($"{typePrefix} Notification failed", $"Notification Failed: {notification}"); 
    _pushLogRepo.Insert(logItem); 
} 
else if (ex is DeviceSubscriptionExpiredException) // Resharper says this is always false 
{ 
    // exception handling code... 
} 
else if (ex is RetryAfterException) // Resharper says this is always false 
{ 
    // exception handling code... 
} 
else 
{ 
    Console.WriteLine("Notification Failed for some (Unknown Reason)"); 
} 

Birisi bunun nasıl mümkün olabileceğini açıklayabilir mi? Nasıl olabileceğini göremiyorum. İşte, sözdizimi vurgulama ile biraz daha net olan VS2015'in ekran görüntüsü - hatayı görmezden geliyorum, ben refactoring'in ortasındayım.

enter image description here

+0

Nasıl bir istisna geçiriliyor? Ne geçiyor? – oppassum

+0

Sade bir eski 'İstisna'. Kullanmakta olduğum bir kitaplık tarafından sağlanan bir hata işleme yöntemi tarafından sağlanıyor. –

+0

Bu kitaplık, genel olarak gelse bile, yalnızca belirli bir özel durum türü atayabilir. Veya bir yeniden sağlanma hatası olabilir. kim bilir. – oppassum

cevap

8

sonra ilk şube hep vurmak olacağından bu sınıflar, NotificationException miras, bu durum olurdu.

+0

* [Bangs head] * Tabii ki. Haklısın. Bunu farketmeliydin. Kanıt için: https://github.com/Redth/PushSharp/blob/master/PushSharp.Core/Exceptions.cs. Teşekkürler –