GenericなExceptionをCatchする

C#

自作のExceptionをCatchしたり、Genericを付けているException(= 意図的に発生させたException)をうまく管理したいですよね。

標準のExceptionにエラー情報を付帯させた場合、ガチのExceptionと区別して処理するためには以下のようにIsGenericTypeで識別します。

catch (FaultException ex)
{
    if (ex.GetType().IsGenericType)
    {
        var genericType = ex.GetType().GetGenericArguments().FirstOrDefault();

        if (genericType != null)
        {
            // Do what you want
        }
    }

    this.Throw(
        new FaultException<SomeErrorInfo>(
            new SomeErrorInfo(ex.ErrorCode, ex.Message, methodName),
            new FaultReason(ex.Message)));
}

コメント