【发布时间】:2011-12-17 10:26:27
【问题描述】:
我有一个捕获 T 异常的泛型类:
公共抽象类 ErrorHandlingOperationInterceptor带有特定异常的子类,例如
公共类 BadRequestOperationInterceptor : ErrorHandlingOperationInterceptor这一切似乎都很完美。但是,不知何故,在日志中(一次,而不是每次)是一个 InvalidCastException:
System.InvalidCastException:无法将“ErrorHandling.Exceptions.ApiException”类型的对象转换为“ErrorHandling.Exceptions.UnexpectedInternalServerErrorException”类型。 在 OperationModel.Interceptors.ErrorHandlingOperationInterceptor`1.c__DisplayClass2.b__1() 在 c:\BuildAgent\work\da77ba20595a9d4\src\OperationModel\Interceptors\ErrorHandlingOperationInterceptor.cs:line 28第 28 行是关键。
我错过了什么?我做了什么傻事吗?
【问题讨论】:
-
是不是因为被触发的异常不是 ApiErrorResource 的类型?什么类型的被抓到?
-
嗯,总是有
TruthException,因为你应付不了 -
代码中哪一行是第28行?
-
@KierenJohnstone,你偷了我的评论!!
-
在运行时,T 应该是一个特定的异常。那么它如何捕获 T 类型的异常,但又无法将其转换为 T 呢?
标签: c# generics error-handling