首页 新闻 会员 周边 捐助

.net core 中自定义的业务异常是怎么处理的?

-1
悬赏园豆:5 [已解决问题] 解决于 2018-08-23 16:55

上图的写法是这样的,就是在每层中,程序员不用考虑用 try catch,框架会统一处理。

我的统一处理方式是写了一个异常的过滤器。当我请求频繁时,会出现一个 “基础连接已关闭,接收时发生错误” 的提示。

请问,大家对这样的需求,最佳的实践是什么?

Skyzi的主页 Skyzi | 初学一级 | 园豆:192
提问于:2018-08-07 22:17

使用 async/await

dudu 6年前
< >
分享
最佳答案
1

用网页访问请求和这个写代码有可能是不一样的。有的客户端代码模块 是 判定 IsSuccess=false(非200)的情况下 是不会再去读 http 包 的 body的,而服务器并不知道,然后就会出现上面这种情况。

收获园豆:5
花飘水流兮 | 专家六级 |园豆:13615 | 2018-08-08 10:43

 我改了另一种方式实现了

Skyzi | 园豆:192 (初学一级) | 2018-08-23 16:57
其他回答(2)
0

可以试试 FluentValidation

dudu | 园豆:30948 (高人七级) | 2018-08-07 22:21

 有试用过这个,感觉略繁琐了。

支持(0) 反对(0) Skyzi | 园豆:192 (初学一级) | 2018-08-07 22:23

@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;
    }
}
支持(0) 反对(0) dudu | 园豆:30948 (高人七级) | 2018-08-09 11:59
0

可能异步写入时候没有等待完成的问题

通信的搞程序 | 园豆:1757 (小虾三级) | 2018-08-08 08:40

 有解决的办法吗

支持(0) 反对(0) Skyzi | 园豆:192 (初学一级) | 2018-08-08 10:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册