我的编程空间,编程开发者的网络收藏夹
学习永远不晚

springmvc错误处理机制是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

springmvc错误处理机制是什么

这篇“springmvc错误处理机制是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“springmvc错误处理机制是什么”文章吧。

1、首先要在  golable  文件的  protected void Application_Start()


注册一个错误处理机制。

MVC中自带一个  过滤器

FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);

springmvc错误处理机制是什么

这里面 我们看到这个过滤器

2、其实就是在 app_Start文件夹下面 的 FilterConfig.cs 文件

springmvc错误处理机制是什么

3、 打开FilterConfig.cs文件

就写了一个注册事件。我们看得到 这个是对错误处理机制

springmvc错误处理机制是什么

(当然 ,你们看到的是  HandleErrorAttribute 这个类)

4、所以你们可能觉得奇怪,我们来查看MyExceptionAttribut的定义看一下

springmvc错误处理机制是什么

继承了HandleErrorAttribute

这里我把这个类的代码贴一下


public class MyExceptionAttribute : HandleErrorAttribute     {         //  private static object obj = new object();         public static ConcurrentQueue<Exception> ExceptionQueue = new ConcurrentQueue<Exception>();//定义队列          /// <summary>         /// 在该方法中捕获异常。         /// </summary>         /// <param name="filterContext"></param>         public override void OnException(ExceptionContext filterContext)         {              base.OnException(filterContext);             Exception ex = filterContext.Exception;//捕获异常信息。             //将异常信息写到队列中。             ExceptionQueue.Enqueue(ex);             //跳转到错误页面.             filterContext.HttpContext.Response.Redirect("/Error.html");                      }     }

主要是定义一个静态 队列  ConcurrentQueue

(当然你也可以用 Queue。但是微软说 这个ConcurrentQueue 比 Queue  安全。好像是线程安全的,一堆堆的理论,说白了就是用ConcurrentQueue 更安全)

这样所有的错误就都在这个队列里面了。(就是内存)

这样总不行吧。内存 断电就没有了的啊。

所以我们要想把资料存到 硬盘中。

5、现在又要在

golable  文件的  protected void Application_Start()


中注册一个消费线程(这句话后面会解释,看不懂就继续)就是在 protected void Application_Start()中加入这些代码,***放最前面。

内容就是线程池开启一个线程 从刚刚定义的 MyExceptionAttribute的 ExceptionQueue队列里面取出项来。

将错误信息最加到文件后面。如果队列为空,就线程停留3秒。


string filePath = Server.MapPath("/Log/");             ThreadPool.QueueUserWorkItem((a) =>             {                  while (true)//注意:线程不能结束。后面写到队列中的数据没法处理。                 {      // 这里可以加一条   if (MyExceptionAttribute.ExceptionQueue.Count() > 0) //{  发送邮件到管理员}                     if (MyExceptionAttribute.ExceptionQueue.Count() > 0)                     {                         // Exception ex= MyExceptionAttribute.ExceptionQueue.Dequeue();//从队列中取出数据.                         Exception ex = null;                         bool isResult = MyExceptionAttribute.ExceptionQueue.TryDequeue(out ex);                         if (ex != null && isResult)                         {                             string fullPath = filePath + DateTime.Now.ToString("yyyy-MM-dd") + ".txt";                             File.AppendAllText(fullPath, ex.ToString());                          //   ILog logger = LogManager.GetLogger("errorMsg");                           //  logger.Error(ex.ToString());                         }                         else                         {                             Thread.Sleep(3000);                         }                     }                     else                     {                         Thread.Sleep(3000);//避免造成CPU的空转。                     }                 }                 }, filePath);

6、总结。

这个就是一个生产者消费者的模式。

生产者就是 产生错误的源头。 消费者就是注册保存日志的方法。

中间有一个仓库就是    那个静态错误队列。

可以看到 系统产生的错误临时存放于内存中。然后一个新的线程 去读写静态错误队列。

正常情况 需要在错误队列里面加一个错误队列数字大于1000条的时候  发警告到邮箱的功能。那样感觉有点问题复杂化了,毕竟这里只是讲错误处理。

7、log4net 我前面讲过的一个开源框架 记录错误很好。

这里提供一个连接    log4net配置方法你可以把那个一起并到这里。那么就会有

把protected void Application_Start()中添加 的代码

改成。注意是改成:

log4net.Config.XmlConfigurator.Configure();             //开始一个线程,查看异常队列             string filePath = Server.MapPath("/Log/");             ThreadPool.QueueUserWorkItem((a) =>             {                  while (true)//注意:线程不能结束。后面写到队列中的数据没法处理。                 {                     if (MyExceptionAttribute.ExceptionQueue.Count() > 0)                     {                         // Exception ex= MyExceptionAttribute.ExceptionQueue.Dequeue();//从队列中取出数据.                         Exception ex = null;                         bool isResult = MyExceptionAttribute.ExceptionQueue.TryDequeue(out ex);                         if (ex != null && isResult)                         {                             string fullPath = filePath + DateTime.Now.ToString("yyyy-MM-dd") + ".txt";                             //File.AppendAllText(fullPath, ex.ToString());                             ILog logger = LogManager.GetLogger("errorMsg");                             logger.Error(ex.ToString());                         }                         else                         {                             Thread.Sleep(3000);                         }                     }                     else                     {                         Thread.Sleep(3000);//避免造成CPU的空转。                     }                 }                 }, filePath);

这样就会按照你的要求把错误日志记录到

app_data文件夹下面。(前提是你有未处理的错误 。呵呵)

看到下图就成功了

springmvc错误处理机制是什么

以上就是关于“springmvc错误处理机制是什么”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

springmvc错误处理机制是什么

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

springmvc错误处理机制是什么

这篇“springmvc错误处理机制是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“springmvc错误处理机制是什么
2023-06-17

Node.js的错误处理机制是什么

本篇内容介绍了“Node.js的错误处理机制是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Node.js 是一个基于 Chrome V
2023-07-05

ASP中的错误处理机制是什么

在ASP中,错误处理机制主要通过错误处理页面、On Error语句和错误对象(Error Object)来实现。错误处理页面:可以使用自定义的错误处理页面来处理ASP页面中的错误。通过设置web.config文件中的customErrors
ASP中的错误处理机制是什么
2024-04-03

php的错误和异常处理机制是什么

本篇内容主要讲解“php的错误和异常处理机制是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php的错误和异常处理机制是什么”吧!一、PHP的错误处理错误类型在PHP开发中,错误通常分为三种
2023-07-05

golang函数中goroutine的错误处理机制是什么?

默认情况下,go 中 goroutine 中的错误会被忽略,需要明确处理。处理方法有:1. 使用 panic 和 recover 函数捕获异常;2. 使用 errors 通道传递错误,以便在主函数中收集和处理错误。Go 语言函数中 Goro
golang函数中goroutine的错误处理机制是什么?
2024-05-05

SpringMvc定制化原理是什么

这篇文章主要介绍了SpringMvc定制化原理是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringMvc定制化原理是什么文章都会有所收获,下面我们一起来看看吧。一、SpringBoot 自动配置套路
2023-07-04

golang函数的错误处理机制

go 语言函数的错误处理机制是通过返回一个类型为 error 的值来指示执行状态。错误处理方法包括:1. 裸返回错误值;2. 使用 fmt.errorf 包装错误;3. 使用 errors.is 和 errors.as 检查错误类型;4.
golang函数的错误处理机制
2024-04-29

Go错误处理机制实例分析

这篇文章主要讲解了“Go错误处理机制实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Go错误处理机制实例分析”吧!Go 错误处理机制Go 内置 errorsGo 语言中的 error
2023-07-02

Pygame在Ubuntu中的错误处理机制

Pygame是一个用于编写视频游戏的Python库,它提供了图像、声音、事件处理等功能。在Ubuntu中,Pygame的错误处理机制通常涉及到以下几个方面:异常捕获:在Python中,你可以使用try-except语句来捕获和处理异常。当你
Pygame在Ubuntu中的错误处理机制
2024-10-13

Linux中Ruby应用错误处理机制

在 Linux 系统中,Ruby 语言的错误处理机制主要依赖于异常处理以下是 Ruby 中常见的错误类型:StandardError:这是 Ruby 中所有标准错误的基类。大多数错误都继承自这个类。ArgumentError:当方法接收
Linux中Ruby应用错误处理机制
2024-09-16

Rust处理错误的方法是什么

这篇文章主要介绍“Rust处理错误的方法是什么”,在日常操作中,相信很多人在Rust处理错误的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Rust处理错误的方法是什么”的疑惑有所帮助!接下来,请跟
2023-07-05

Linux推送服务的错误处理机制

Linux推送服务的错误处理机制包括以下几个方面:日志记录:推送服务通常会记录各种操作的日志,包括成功和失败的推送请求。通过查看日志文件,可以及时发现错误并进行排查。错误代码:推送服务通常会返回相应的错误代码或错误信息,以便客户端或管理员了
Linux推送服务的错误处理机制
2024-08-23

golang函数中错误处理机制详解

golang 函数中错误处理机制利用 error 类型和 error 标准接口来处理错误。错误类型可自定义,通过 error() 方法返回错误描述。错误处理机制包括显式错误(通过返回值传递错误)和隐式错误(通过 panic 终止函数)。显式
golang函数中错误处理机制详解
2024-05-03

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录