日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > asp.net >内容正文

asp.net

asp.net core web mvc之异常

發(fā)布時(shí)間:2023/12/4 asp.net 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

public void Configure(IApplicationBuilder app, IWebHostEnvironment env){if (env.IsDevelopment()){app.UseDeveloperExceptionPage();}else{app.UseExceptionHandler("/Home/Error");app.UseHsts();}//處理404數(shù)據(jù)的顯示信息app.UseStatusCodePages(async context =>{context.HttpContext.Response.ContentType = "text/plain";await context.HttpContext.Response.WriteAsync($"找不到資源,狀態(tài)碼: {context.HttpContext.Response.StatusCode}");});//……}

異常業(yè)務(wù)類(lèi)定義如下

using?System; namespace WebError {/// <summary>/// 產(chǎn)品異常/// </summary>public class DaMeiException : ApplicationException{/// <summary>/// /// </summary>/// <param name="message"></param>public DaMeiException(string message) : base(message){}}/// <summary>/// His項(xiàng)目異常/// </summary>public class HisException : DaMeiException{/// <summary>/// /// </summary>/// <param name="message"></param>public HisException(string message) : base(message){}}/// <summary>/// Lis項(xiàng)目異常/// </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中,因?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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。