上图的写法是这样的,就是在每层中,程序员不用考虑用 try catch,框架会统一处理。
我的统一处理方式是写了一个异常的过滤器。当我请求频繁时,会出现一个 “基础连接已关闭,接收时发生错误” 的提示。
请问,大家对这样的需求,最佳的实践是什么?
用网页访问请求和这个写代码有可能是不一样的。有的客户端代码模块 是 判定 IsSuccess=false(非200)的情况下 是不会再去读 http 包 的 body的,而服务器并不知道,然后就会出现上面这种情况。
我改了另一种方式实现了
可以试试 FluentValidation
有试用过这个,感觉略繁琐了。
@Skyzi: 基于 ExceptionFilter 的实现代码
public class ExceptionFilter : IAsyncExceptionFilter
{
public Task OnExceptionAsync(ExceptionContext context)
{
if(context.Exception is BusinessException)
{
var ex = (BusinessException)context.Exception;
context.Result = new JsonResult(new { ex.Code, ex.Message });
}
return Task.CompletedTask;
}
}
可能异步写入时候没有等待完成的问题
有解决的办法吗
使用 async/await
– dudu 6年前