分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

从零写一个Asp.net core手脚架 (异常处理)

发布时间:2023-09-06 02:32责任编辑:彭小芳关键词:暂无标签

既然是手脚架,那么肯定得明白,手脚架是有限资源的一个整合,我们尽可能完善它,并保留可扩展性才是最终目的,尽可能减少硬编码,让业务不满足的情况下,可以自行修改

我们把解决方案取名Asp.netCoreTemplate,项目取名Core.Template

Core.Template顾名思义,核心的模板,并不是我们最终生成项目的手脚架

手脚架叫Core.Template.CLI

构建处理异常的中间件

我们创建一个Middleware文件夹,单击右键新建项->中间件类

取名ExceptionMiddleware

这个中间件要在启用Mvc(UseMvc)之前,处理异常,统一返回

我们定义一个处理业务以及非业务异常的接口

 ???public interface IExceptionHandler ???{ ???????Task ExecuteAsync(HttpContext context,Exception exception); ???}

我们写一个默认实现

 ???internal class ExceptionHandler : IExceptionHandler ???{ ???????public async Task ExecuteAsync(HttpContext context, Exception exception) ???????{ ???????????await context.Response.WriteAsync("Exception Hello"); ???????} ???}

触发异常之后返回"Hello"

我们在项目默认的ValuesController里增加一个Action叫Exception

直接抛出异常,会不会正确收到“Exception Hello”

运行一下

大功告成~~~

扩展

你以为撒花了啊?我们是写脚手架,尽可能一键生成代码的,至少要减少很多不必要的代码吧?

你写一堆if else算哪门子的脚手架~

再扩展一下

 ???[AttributeUsage(AttributeTargets.Method)] ???public abstract class ExceptionAttribute : Attribute ???{ ???????public Type ExceptionType { get; } ???????public ExceptionAttribute(Type type) ???????{ ???????????if (!type.IsSubclassOf(typeof(Exception))) ???????????????throw new Exception($"Type Nof Inherit From Exceptoion"); ???????????ExceptionType = type; ???????} ???}

打上这个特性的方法

返回Task 第一个参数HttpContext,第二个参数Exception,并且不等于“ExecuteAsync” 不能死循环递归吧

我们增加一个方法

 ???????[ExceptionMethos(typeof(CoreException))] ???????public async Task CoreAsync(HttpContext context, Exception exception) ???????{ ???????????await context.Response.WriteAsync("Core Exception Hello"); ???????}

增加一个Action,抛出异常类型CoreException测试一下

我们之后就这样添加就行了,代码里面不用写一堆if else

后记

我个人理解的脚手架,就要极可能代码简洁明了,不要有过多代码去影响阅读质量,留足够多的扩展空间

这篇文档省略了很多实际性的代码,这部分,我作为github项目的形式提供,希望不会给太多设计细节在文章里面

链接附上

https://github.com/htrlq/AspNetCoreTemplate

从零写一个Asp.net core手脚架 (异常处理)

原文地址:https://www.cnblogs.com/NCoreCoder/p/10346223.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved