私は例外を処理する方法を詳述するPushSharpの例からこのコードを持っています。なんらかの理由で、else
の条件はすべてResharperによってグレー表示され、The expression is always false
と記載されています。私はこれがどのように可能であるかはわかりません。Resharperはif/else条件が決して当てはまらないと主張します、なぜですか?
// 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)");
}
これがどのように可能か説明できますか?私はそれがどのようにできるかはわかりません。ここでVS2015のスクリーンショットがありますが、これは構文のハイライト表示で少しはっきりしています。エラーを無視して、私はリファクタリングの途中です。
どのような例外が受け渡されていますか?それを渡すのは何ですか? – oppassum
これは普通の「例外」です。これは、私が使用しているライブラリによって提供されるエラー処理メソッドによって提供されています。 –
そのライブラリは、たとえそれがジェネリックとして入ってきたとしても、特定のタイプの例外をスローするだけです。 また、再サーザーエラーである可能性があります。知るか。 – oppassum