asp.net core web mvc之异常
生活随笔
收集整理的這篇文章主要介紹了
asp.net core web mvc之异常
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
與web api類(lèi)似,asp.net core web mvc模板也是利用ExceptionHandler來(lái)處理錯(cuò)誤,在starup的Configure配置數(shù)據(jù)發(fā)生時(shí)導(dǎo)向的/home/error
異常業(yè)務(wù)類(lèi)定義如下
Controller.cs中,因?yàn)閣eb mvc是有view的,所以把錯(cuò)誤返回到ErrorViewModel到View前端進(jìn)行顯示。同樣,業(yè)務(wù)異常類(lèi)DaMeiException作為錯(cuò)誤分類(lèi)處理的標(biāo)志,從而完成異常的分類(lèi)處理。
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("這是一個(gè)錯(cuò)誤");default:return View();}}[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]public IActionResult Error(){var context = HttpContext.Features.Get<IExceptionHandlerFeature>(); //如果是業(yè)務(wù)自定義異常,進(jìn)行特殊處理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?完成具體數(shù)據(jù)的展示??
@model ErrorViewModel @{ViewData["Title"] = "錯(cuò)誤"; } <h1 class="text-danger">錯(cuò)誤</h1> <h2?class="text-danger">一個(gè)請(qǐng)求處理錯(cuò)誤</h2> @if (Model.ShowRequestId) {<h3>@Model.ErrorType</h3><p><strong>請(qǐng)求ID:</strong> <code>@Model.RequestId</code></p><p>@Model.ErrorMessage</p> }???????每個(gè)框都有處理異常的方式,關(guān)鍵是要設(shè)計(jì)好業(yè)務(wù)系統(tǒng)中的異常關(guān)系,標(biāo)準(zhǔn)化異常處理的流程和格式,方便日志,監(jiān)控系統(tǒng)采集匯總這些異常,為系統(tǒng)穩(wěn)定提供保駕護(hù)航。
?
總結(jié)
以上是生活随笔為你收集整理的asp.net core web mvc之异常的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C# Span 源码解读和应用实践
- 下一篇: ASP.NET Core 中基于工厂的中