有关MVC异常情况的相关处理

这篇文章主要为大家详细介绍了mvc异常处理的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

       在日常开发中,我们会去捕捉很多的异常,来进行处理,通常我们的方法就是,在需要进行异常处理的地方加上 try catch 块,但是,如果需要异常处理的地方很多,那么,就会频繁的去写try catch 块,对于我们天生‘懒惰’ 的程序员来说,总想找一个捷径。于是,就会有全局异常处理,那么,今天,我们就来看看在MVC中怎么进行全局异常处理的。

一、MVC框架自己的全局异常处理

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

public static void RegisterGlobalFilters(GlobalFilterCollection filters) {    filters.Add(new HandleErrorAttribute());  }

登录后复制

这个就是实例化一个HandleErrorAttribute类,放到过滤器中。然后我们的Views>Shared文件夹中有一个Error.cshtml的页面,其中,该页面里的Model的类型为System.Web.Mvc.HandleErrorInfo,这个是MVC框架已经给我写好了的,我们可以直接拿来用。

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

例如:一下是Error.cshtml。

有关MVC异常情况的相关处理

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

public class HomeController : Controller  {    public ActionResult Index()    {      string i = "12a";      int j = Convert.ToInt32(i);      return View();    }  }

登录后复制

运行一下,我们来看一下结果。

有关MVC异常情况的相关处理

以上就是运行的结果,我们可以看到,System.Web.Mvc.HandleErrorInfo类还是有很多丰富的属性的,我们可以直接拿来用。

MVC自带的这套异常处理默认的是处理错误码为500系列的异常,如果是404,就不会走这个了。不过,我们可以通过Web.config文件的设置,来进行处理。看我们如何处理的。

首先,我们先将Error.cshtml页补充完整,先给他加一个Control,然后,我们再写一个专门处理404的View和Control。如下

namespace Exception.Controllers{  public class SharedController : Controller  {    // GET: Shares    public ActionResult Error()    {      return View();    }    public ActionResult NotFondError()    {      return View();    }  }}

登录后复制

页面:

有关MVC异常情况的相关处理

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

有关MVC异常情况的相关处理

二、重写MVC中的异常处理

在开发中,我们经常有这么一个需求,我们需要将异常通过文本日志的方式记录下来并保存,那么MVC自带的异常处理方式System.Web.Mvc.HandleErrorInfo没有这么一个功能,那么我们通过重写的方式来让它有这个功能。下面,我们来看看如何重写。

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

public class CustomHandleErrorAttribute : HandleErrorAttribute  {    public override void OnException(ExceptionContext filterContext)    {      base.OnException(filterContext);      var err = filterContext.Exception.Message;//错误内容      //=============================      //将错误记录到日志中      //=============================    }  }

登录后复制

然后,将FilterConfig.cs加入:

public class FilterConfig  {    public static void RegisterGlobalFilters(GlobalFilterCollection filters)    {      filters.Add(new HandleErrorAttribute());      filters.Add(new CustomHandleErrorAttribute());    }  }

登录后复制

这样,我们就可以完成我们的需求了。

以上就是有关MVC异常情况的相关处理的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2438764.html

(0)
上一篇 2025年3月3日 11:50:07
下一篇 2025年2月20日 19:26:07

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 分析.NET的异常处理

    这篇文章主要介绍了关于.net异常处理的思考总结,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。 年关将至,对于大部分程序员来说,马上就可以闲下来一段时间了,然而在这个闲暇的时间里,唯有争论哪门语言更好可以消磨时光,估计最近会有很多关于…

    编程技术 2025年3月3日
    200
  • C#中的异常处理及错误日志记录技巧

    C#中的异常处理及错误日志记录技巧 引言:在软件开发过程中,异常处理和错误日志记录是非常重要的环节。对于C#开发者来说,掌握异常处理的技巧和错误日志记录的方法可以帮助我们更好地追踪和调试代码,提高程序的稳定性和可维护性。本文将介绍C#中常用…

    2025年3月3日
    200
  • C#开发中如何处理数据库事务问题

    C#开发中如何处理数据库事务问题,需要具体代码示例 引言:在C#开发中,数据库事务的处理是非常重要的一项技术。通过事务的处理,我们可以确保数据库操作的一致性和完整性,提高系统的稳定性和安全性。本文将介绍C#中如何处理数据库事务问题,并给出具…

    2025年3月3日
    200
  • C#开发中如何处理XML和JSON数据格式

    C#开发中如何处理XML和JSON数据格式,需要具体代码示例 在现代软件开发中,XML和JSON是广泛应用的两种数据格式。XML(可扩展标记语言)是一种用于存储和传输数据的标记语言,而JSON(JavaScript对象表示)是一种轻量级的数…

    2025年3月3日
    200
  • 微服务架构中如何处理大量的异步任务?

    随着云计算和大数据时代的到来,解决并发问题已经成为了互联网架构设计的关键。而微服务架构作为云时代下的一种较为先进的架构方式,其本身的异步任务处理能力成为了其优势之一。但是,当异步任务数量急剧增加时,也会给微服务架构的性能和稳定性带来挑战。本…

    编程技术 2025年3月2日
    200
  • Go语言中的Http请求处理详解

    go语言是一种高效的编程语言,它的简洁、高效、安全和可靠等优点受到了广泛的认可和应用。其中,之所以被广泛的应用,与其支持的强大的网络库也是分不开的。本文将重点介绍go语言中的http请求处理。 一、Http请求处理基础Http请求处理是We…

    编程技术 2025年3月2日
    200
  • 如何使用Go语言进行大数据处理

    如何使用go语言进行大数据处理 随着大数据的快速发展,越来越多的企业和组织需要处理日益增长的数据量。而Go语言作为一门高性能的编程语言,逐渐成为大数据处理的首选语言之一。本文将介绍如何使用go语言进行大数据处理,包括数据读取、数据处理和数据…

    编程技术 2025年3月2日
    200
  • 如何使用Go语言进行消息队列处理

    如何使用go语言进行消息队列处理 消息队列是一种常用的信息传输和处理方式,用于实现系统之间的异步通信和解耦。而Go语言作为一种高性能、简洁的编程语言,也为消息队列的处理提供了很好的支持。本文将介绍如何使用go语言进行消息队列处理,并提供相应…

    编程技术 2025年3月2日
    200
  • 如何使用Go WaitGroup处理并发任务

    如何使用Go WaitGroup处理并发任务 在Go语言中,我们可以通过使用sync.WaitGroup来处理并发任务。sync.WaitGroup可以在处理并发任务时提供一种简洁而有效的方式来协调协程的执行。 sync.WaitGroup…

    2025年3月1日
    200
  • 实时数据处理:利用Go WaitGroup处理数据流

    实时数据处理:利用Go WaitGroup处理数据流 引言:在当今大数据时代,实时数据处理已经成为了许多企业业务运营的重要组成部分。对于需要处理大量数据的应用程序来说,如何高效处理数据流成为了一个关键问题。在Go语言中,可以利用WaitGr…

    2025年3月1日
    200

发表回复

登录后才能评论