在我的api中,我有一个包含操作的标准Controller,该操作调用一个服务,然后调用客户端来联系其他第三方api。
我希望实现一个类似于以下内容的异常过滤器:
public class CustomExceptionFilterAttribute : ExceptionFilterAttribute
{
private readonly IHostingEnvironment _hostingEnvironment;
private readonly IModelMetadataProvider _modelMetadataProvider;
public CustomExceptionFilterAttribute(
IHostingEnvironment hostingEnvironment,
IModelMetadataProvider modelMetadataProvider)
{
_hostingEnvironment = hostingEnvironment;
_modelMetadataProvider = modelMetadataProvider;
}
public override void OnException(ExceptionContext context)
{
if (!_hostingEnvironment.IsDevelopment())
{
// do nothing
return;
}
var result = new ViewResult {ViewName = "CustomError"};
result.ViewData = new ViewDataDictionary(_modelMetadataProvider,context.ModelState);
result.ViewData.Add("Exception", context.Exception);
// TODO: Pass additional detailed data via ViewData
context.Result = result;
}
}例如,如果我的客户机类抛出了一个异常,那么过滤器是否会立即被调用,即使我的服务类(它调用客户机类)已经准备好捕获这样的异常了?
发布于 2019-01-28 20:10:22
不是的。根据您所指的文档,异常筛选器将只由未处理的异常触发;如果服务处理客户端异常并没有重新引发,则异常筛选器将不会触发。
异常过滤器:
https://stackoverflow.com/questions/54409298
复制相似问题