asp.net core web mvc之异常

与web api类似,asp.net core web mvc模板也是利用ExceptionHandler来处理错误,在starup的Configure配置数据发生时导向的/home/error

        public void Configure(IApplicationBuilder app, IWebHostEnvironment env){if (env.IsDevelopment()){app.UseDeveloperExceptionPage();}else{app.UseExceptionHandler("/Home/Error");app.UseHsts();}//处理404数据的显示信息app.UseStatusCodePages(async context =>{context.HttpContext.Response.ContentType = "text/plain";await context.HttpContext.Response.WriteAsync($"找不到资源,状态码: {context.HttpContext.Response.StatusCode}");});//……}

异常业务类定义如下

using System;
namespace WebError
{/// <summary>/// 产品异常/// </summary>public class DaMeiException : ApplicationException{/// <summary>/// /// </summary>/// <param name="message"></param>public DaMeiException(string message) : base(message){}}/// <summary>/// His项目异常/// </summary>public class HisException : DaMeiException{/// <summary>/// /// </summary>/// <param name="message"></param>public HisException(string message) : base(message){}}/// <summary>/// Lis项目异常/// </summary>public class LisException : DaMeiException{/// <summary>/// /// </summary>/// <param name="message"></param>public LisException(string message) : base(message){}}/// <summary>/// 模块异常/// </summary>public class RegisteredException : HisException{/// <summary>/// /// </summary>/// <param name="message"></param>public RegisteredException(string message) : base(message){}}
}

Controller.cs中,因为web mvc是有view的,所以把错误返回到ErrorViewModel到View前端进行显示。同样,业务异常类DaMeiException作为错误分类处理的标志,从而完成异常的分类处理。

        public IActionResult Privacy(){var ran = new Random();switch (ran.Next(1, 4)){case 1:int i = 0;var j = 10 / i;return Ok();case 2:throw new RegisteredException("这是一个错误");default:return View();}}[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]public IActionResult Error(){var context = HttpContext.Features.Get<IExceptionHandlerFeature>();       //如果是业务自定义异常,进行特殊处理if (context.Error is DaMeiException){return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier, ErrorMessage = context.Error.Message, ErrorType = "His" });}else{return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier, ErrorMessage = context.Error.Message, ErrorType = "System" });}}

Error.schtml 完成具体数据的展示  

@model ErrorViewModel
@{ViewData["Title"] = "错误";
}
<h1 class="text-danger">错误</h1>
<h2 class="text-danger">一个请求处理错误</h2>
@if (Model.ShowRequestId)
{<h3>@Model.ErrorType</h3><p><strong>请求ID:</strong> <code>@Model.RequestId</code></p><p>@Model.ErrorMessage</p>
}

       每个框都有处理异常的方式,关键是要设计好业务系统中的异常关系,标准化异常处理的流程和格式,方便日志,监控系统采集汇总这些异常,为系统稳定提供保驾护航。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/306964.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php phpmailer qq邮箱,QQ邮箱利用PHPmailer发送邮件

require_once("class.phpmailer.php");$mail new PHPMailer();//是否启用smtp的debug进行调试 开发环境建议开启 生产环境注释掉即可 默认关闭debug调试模式$mail->SMTPDebug 1;//使用smtp鉴权方式发送邮件$mail->isSMTP();//smtp需要鉴权 这个必须是true$ma…

java 类的实例化没有属性值,java – JsonMappingException:无法实例化类型的值没有single-long-arg构造函数/工厂方法...

嗨我正在尝试在zk框架上解析json响应到java中这是杰森的答复{"currentTime":1355390722038,"text":"OK","data":{"limitExceeded":false,"references":{"stops":[],"situations":[],"tr…

[C#.NET 拾遗补漏]12:死锁和活锁的发生及避免

多线程编程时&#xff0c;如果涉及同时读写共享数据&#xff0c;就要格外小心。如果共享数据是独占资源&#xff0c;则要对共享数据的读写进行排它访问&#xff0c;最简单的方式就是加锁。锁也不能随便用&#xff0c;否则可能会造成死锁和活锁。本文将通过示例详细讲解死锁和活…

64岁Python之父加入微软 | 谁说大龄程序员无出路

喜欢就关注我们吧&#xff01;现年 64 岁的 Python 创始人 Guido van Rossum 退休一年后再度复出&#xff0c;今天宣布已加入微软开发者部门 (Developer Division).我觉得退休生活乏味又无趣&#xff0c;因此已加入微软开发者部门。做什么工作&#xff1f;选择太多了&#xff0…

JAVA中的GridView每一个赋值,在ASP.NET 2.0中操作数据之六十二:GridView批量更新数据...

导言&#xff1a;在前面的教程&#xff0c;我们对数据访问层进行扩展以支持数据库事务.数据库事务确保一系列的操作要么都成功&#xff0c;要么都失败。本文我们将注意力转到创建一个批更新数据界面.在本文&#xff0c;我们将创建一个GridView控件&#xff0c;里面的每一行记录…

微软发布VS Code Jupyter插件!不止Python!多语言的Jupyter Notebook支持来了!

北京时间 2020 年 11 月 12 日&#xff0c;微软发布了全新的 VS Code Jupyter 插件&#xff01;Jupyter 插件将 Jupyter Notebook 的功能引入 VS Code&#xff0c;并且将会支持更多语言和使用场景。Jupyter Notebook 支持创建和共享包含代码、方程式、文本和可视化内容的文档&a…

java xml 追加,java – 如何将节点从xml文档追加到现有的xml文档

我的a.xml中有锦标赛列表&#xff1a;abc广告然后我在b.xml中有一个锦标赛d我怎样才能将b.xml文件作为另一个锦标赛的文件&#xff1f;所以这就是我想要的&#xff1a;abcd解决方法:更新.码&#xff1a;DocumentBuilderFactory documentBuilderFactory DocumentBuilderFactory…

windows安全模式_鲁大师正式挂牌上市,使用鲁大师如何开启笔记本电脑全面节能模式...

10月10日消息&#xff0c;今天360旗下的鲁大师正式挂牌上市。上市之后&#xff0c;鲁大师的盘中涨幅一度扩大至100%&#xff0c;鲁大师的市值也一度达到了14亿港元。过去三个财年&#xff0c;鲁大师的营业收入分别为6981.2万、1.23亿和3.20亿人民币。简单介绍360&#xff0c;36…

跟我一起学Redis之Redis事务简单了解一下

前言关系数据库中的事务&#xff0c;小伙伴们应该是不陌生了&#xff0c;不管是在开发还是在面试过程中&#xff0c;总有两个问题逃不掉&#xff1a;•说说事务的特性&#xff1b;•事务隔离级别是怎么一回事&#xff1f;事务处理不好&#xff0c;数据就可能不准确&#xff0c;…

MATLAB函数gensurf,MATLAB模糊逻辑工具箱函数.ppt

1 MATLAB模糊逻辑工具箱简介 2 利用模糊逻辑工具箱建立模糊推理系统 3 MATLAB模糊逻辑工具箱的图形用户界面 4 基于Simulink的模糊逻辑的系统模块 5.2.5 模糊推理计算与去模糊化 在建立好模糊语言变量及其隶属度的值&#xff0c;并构造完成模糊规则之后&#xff0c;就可执行模糊…

groovy 字符串截取最后一个_Python入门高级教程--Python 字符串

Python 字符串字符串是 Python 中最常用的数据类型。我们可以使用引号(或")来创建字符串。创建字符串很简单&#xff0c;只要为变量分配一个值即可。例如&#xff1a;var1 Hello World!var2 "Python Runoob"Python 访问字符串中的值Python 不支持单字符类型&a…

ASP.NET Core 中基于工厂的中间件激活

IMiddlewareFactory/IMiddleware 是中间件激活的扩展点。UseMiddleware 扩展方法检查中间件的已注册类型是否实现 IMiddleware。 如果是&#xff0c;则使用在容器中注册的 IMiddlewareFactory 实例来解析 IMiddleware 实现&#xff0c;而不使用基于约定的中间件激活逻辑。 中间…

java面试题_阿里大厂流出的数百道 Java 经典面试题

BAT 常问的 Java基础39道常见面试题1.八种基本数据类型的大小&#xff0c;以及他们的封装类2.引用数据类型3.Switch能否用string做参数4.equals与的区别5.自动装箱&#xff0c;常量池6.Object有哪些公用方法7.Java的四种引用&#xff0c;强弱软虚&#xff0c;用到的场景8.Hashc…

php怎么压缩文字,php实现的简单压缩英文字符串的代码

PHP,适应于上帖简单加密后的密文//replacement来自上个版本的加密替换function compress_func($match) {return strlen($match[0]).$match[0]{0};}function uncompress_func($match) {return str_repeat($match[2], $match[1]);}function compress($str) {$i 0;$pattern arra…

​被冷落的运算符重载

基本类型可以使用运算符进行运算、比较、取反等操作。如果想使用运算符操作两个对象&#xff0c;我们就需要用到运算符重载。我们先看个例子&#xff0c;假如有个房子类&#xff0c;有长和宽两个属性。代码如下&#xff1a;接下来我们使用House类实例化两个对象&#xff1a;hou…

如何在MATLAB中把变量填到Word中,matlab数据写入现有excel表格-如何将matlab中变量写入excel...

如何将matlab 中的数据写入现有的word 表格中&#xff1f;你可以这样做&#xff1a;(1)先在matlab里面&#xff0c;把相关数据导出、保存成csv格式的文件&#xff1b;比如说&#xff0c;你可以在workspace视图底下&#xff0c;把相关的变量直接导出&#xff1b;(2)用excel打开c…

neo4j 查询同一节点的两个上级_WhatRoute for Mac(互联网流量诊断查询工具)

如果您想在不使用命令行的情况下执行流量诊断查询&#xff0c;那么WhatRoute是一个不错的选择。WhatRoute提供了一个干净且有条理的界面&#xff0c;主要提供Traceroute功能&#xff0c;但也可以执行Ping&#xff0c;域名服务查询&#xff0c;Whois查询以及监控进出计算机的流量…

matlab的灰色关联,灰色关联度Matlab代码

load x.txt %把原始数据存放在纯文本文件x.txt中&#xff0c;其中把数据的"替换替换成.for i1:40x(i,:)x(i,:)/x(i,1); %标准化数据enddatax;nsize(data,2); %求矩阵的列数&#xff0c;即观测时刻的个数ckdata(1,:); %提出参考数列bjdata(2:end,:); %提出比较数列m2size(b…

快来参加学习.NET 挑战赛

今天访问dot.net 网站看到了一个学习.NET 挑战赛&#xff0c;发现已经赛程过半了&#xff0c;这是一个为那些想更多地了解 C# 和 .NET 的人举办的一个完全免费的课程活动&#xff0c;这些模块必须在 11 月底前完成。参加这个挑战赛&#xff0c;你必须从 .NET 学习挑战页面进入进…

excel怎么设置打印区域_别再浪费打印纸了!这样设置,Excel表格再大都能打印成一页!...

在打印Excel表格时&#xff0c;你是不是经常碰到过这种情况&#xff1a;明明排版好的表格&#xff0c;结果打印完却发现只显示一半......表格太宽导致无法打印在A4纸上......今天叨叨君就来分享几个有效的解决方法&#xff0c;教你轻轻松松将表格打印在一页纸上&#xff0c;一起…