统一异常处理

当存在大量方法的时候,如果每一个都单独处理异常,那是一件相当繁琐的工作。组件可以基于过虑器来实现统一异常处理和响应,实现起来也非常简单。

制定异常过虑器

复制代码
    public class CatchException : FilterAttribute
    {
        public override void Executed(ActionContext context)
        {
            base.Executed(context);
            if (context.Exception != null)
            {
                context.Result = new TextResult(context.Exception.Message);
                context.Exception = null;
            }
        }
    }
复制代码

实现Executed方法,判断当前处理上下是否存在异常,如果存在则返回自定义的IResult,并把上下文的异常清空,如果不清空组件会对外抛InnerErroResult

设置全局

mApiServer.ServerConfig.Filters.Add(new CatehException());
mApiServer.Register(typeof(Program).Assembly);

添加全局过虑器,必须在注册控制器前添加。

测试

        public void Throw()
        {
            throw new Exception("hello");
        }

以上方法是抛出一个异常,经过过虑器处理后响应结果是:

 

posted @   beetlex  阅读(221)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
历史上的今天:
2018-09-17 dotnet core高吞吐Http api服务组件FastHttpApi
2014-09-17 azure存储压测的问题(农码主观意识太强被坑了)
点击右上角即可分享
微信分享提示