宝哥软件园

MVC异常处理的详细说明

编辑:宝哥软件园 来源:互联网 时间:2021-09-04

在日常开发中,我们会捕捉到很多异常并进行处理。通常,我们的方法是在需要异常处理的地方添加try catch块。但是,如果有很多地方需要异常处理,我们会频繁地编写try catch块。对于我们天生懒惰的程序员来说,我们总是想找到一条捷径。因此,会有全局异常处理,所以今天,我们来看看如何在MVC中处理全局异常。

1.MVC框架本身的全局异常处理

在MVC中,框架给了我们一套全局异常处理的特征类HandleErrorAttribute类。我们可以在MVC中App_Start文件夹的FilterConfig.cs文件中找到这样一行代码

public static void RegisterGlobalFilters(GlobalFilterCollection filters){ filters。add(new handleerrortattribute());}这是实例化一个HandleErrorAttribute类,并将其放入过滤器中。然后,在我们的视图共享文件夹中有一个错误. cshtml页面,其中该页面中的模型类型是系统。Web.Mvc.HandleErrorInfo,这是Mvc框架给我写的,我们可以直接使用。

在Error.cshtml页面中,我们可以做进一步的处理来显示错误信息,并根据需要显示错误信息。这些错误消息可以在系统的某些属性中找到。Web.Mvc.HandleErrorInfo类。

示例:一次是错误.

在Control中,我们故意写了一个异常:

公共类HomeController : Controller { public action result Index(){ string I=' 12a ';int j=转换。to t32(I);返回视图();}}运行它,让我们看看结果。

以上是跑步的结果。我们可以看到系统。Web.Mvc.HandleErrorInfo类还有很多丰富的属性,我们可以直接使用。

默认情况下,MVC自己的异常处理是处理错误代码为500系列的异常。如果是404,就不会走这条路。但是,我们可以通过设置Web.config文件来处理它。看我们怎么处理。

首先,我们将完成Error.cshtml页面,首先向其中添加一个Control,然后我们将编写一个View and Control来处理404。如下

命名空间异常。控制器{公共类SharedController :控制器{ //GET:共享公共操作结果错误(){返回视图();} public action result NotFondError(){ return View();}}}页面:

然后我们在浏览器地址中写了一个错误的地址,并查看结果:

第二,重写MVC中的异常处理

在开发过程中,我们经常有这样的需求,需要通过文本日志的方式记录和保存异常,所以异常处理方法System。Mvc自带的Web.Mvc.HandleErrorInfo就没有这样的功能,所以我们重写一下就有了这个功能。接下来,让我们看看如何重写。

首先,我们构建一个类,让这个类继承System。Web.Mvc.HandleErrorInfo,然后在System中重写虚拟方法。web . MVC . handleerrorinfo:OnException方法。

公共类customhandleerrortattribute : handleerrortattribute { public override void OnException(exception context filter context){ base }。OnException(filter context);var err=filterContext。异常。消息;//错误内容//=============================//将错误记录在日志中//==========================。

公共类filter config { public static void RegisterGlobalFilters(GlobalFilterCollection filters){ filters。add(new handleerrortattribute());过滤器。添加(新的customhandleerrortattribute());}}这样,我们才能满足自己的需求。

以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。

更多资讯
游戏推荐
更多+