是否有可能捕获无法处理的异常(在c#中)?

本文关键字:异常 有可能 处理 是否 | 更新日期: 2023-09-27 18:12:45

我有一个捕获T异常的泛型类:

<>之前公共抽象类ErrorHandlingOperationInterceptor<: OperationInterceptor,其中T: ApiException{private readonly Func<_resultFactory;保护ErrorHandlingOperationInterceptor (FuncresultFactory){_resultFactory = results factory;}OutputMember>>RewriteOperation (Func<IEnumerable&lt>比;operationBuilder){Return () =>{试一试{返回operationBuilder ();}catch(名词)catch(名词){var operationResult = _resultFactory();operationResult。ResponseResource = new ApiErrorResource {Exception = ex};返回operationResult.AsOutput ();}};}}之前

带有特定异常的子类,例如

<>之前BadRequestException>{public BadRequestOperationInterceptor(): base(() =>new OperationResult.BadRequest()) {}}之前

这一切似乎都很完美。但是,不知何故,在日志中(一次,而不是每次)是InvalidCastException:

<>之前系统。InvalidCastException:无法转换类型为"ErrorHandling.Exceptions"的对象。ApiException'类型为' errorhandling . exceptions . unexpected internalservererrorreexception '。在c:'BuildAgent'work'da77ba20595a9d4'src'OperationModel'Interceptors'ErrorHandlingOperationInterceptor.cs:第28行之前

第28行是个问题。

我错过了什么?我是不是做了什么蠢事?

是否有可能捕获无法处理的异常(在c#中)?

正如smith所说,你们的TApiErrorResource型的。你是,在你的代码的某些地方,试图创建你的ErrorHandlingOperationInterceptorException,不是从ApiErrorResource派生的。

try
{
// throw Exception of some sort
}
catch (BadRequestException ex)
{
    BadRequestOperationInterceptor broi = new BadRequestOperationInterceptor ();
}
catch (Exception ex)
{
    // this is NOT right
    BadRequestOperationInterceptor broi = new BadRequestOperationInterceptor ();
}