TDetail から派生した例外の FaultException をキャッチするにはどうすればよいですか?
試してみcatch( FaultException<Exception> ) {}
ましたが、うまくいかないようです。
編集
目的は、Detail プロパティにアクセスすることです。
TDetail から派生した例外の FaultException をキャッチするにはどうすればよいですか?
試してみcatch( FaultException<Exception> ) {}
ましたが、うまくいかないようです。
編集
目的は、Detail プロパティにアクセスすることです。
FaultException<>
から継承しFaultException
ます。コードを次のように変更します。
catch (FaultException fx) // catches all your fault exceptions
{
...
}
=== 編集 ===
必要なFaultException<T>.Detail
場合は、いくつかのオプションがありますが、どれも友好的ではありません。最善の解決策は、キャッチしたい個々のタイプを個別にキャッチすることです。
catch (FaultException<Foo> fx)
{
...
}
catch (FaultException<Bar> fx)
{
...
}
catch (FaultException fx) // catches all your other fault exceptions
{
...
}
そのようにすることをお勧めします。そうしないと、反射に陥ってしまいます。
try
{
throw new FaultException<int>(5);
}
catch (FaultException ex)
{
Type exType = ex.GetType();
if (exType.IsGenericType && exType.GetGenericTypeDefinition().Equals(typeof(FaultException<>)))
{
object o = exType.GetProperty("Detail").GetValue(ex, null);
}
}
リフレクションは遅いですが、例外はめったに発生しないはずなので... 繰り返しになりますが、できる限りそれらを分割することをお勧めします。