c# – 我应该抛出Global.asax中的Application_Error处理程序中发生的异常吗?

c# – 我应该抛出Global.asax中的Application_Error处理程序中发生的异常吗?,第1张

概述aspx.cs中未处理的错误代码将被global.asax中的Application_Error处理程序捕获. 我在Application_Error处理程序中编写了一些代码来记录aspx.cs中发生的这种未处理的错误 但是如果日志代码本身也失败并产生异常(可能是由于I / O或文件系统问题) 我应该抛出这样的异常吗? 如果我扔掉它,哪个事件应该收到这样的例外? 或者如果我写“throw”语法没有 aspx.cs中未处理的错误代码将被global.asax中的Application_Error处理程序捕获.
我在Application_Error处理程序中编写了一些代码来记录aspx.cs中发生的这种未处理的错误
但是如果日志代码本身也失败并产生异常(可能是由于I / O或文件系统问题)
我应该抛出这样的异常吗?
如果我扔掉它,哪个事件应该收到这样的例外?
或者如果我写“throw”语法没有区别?
代码示例如下
protected voID Application_Error(object sender,EventArgs e){    try    {        // my codes to log exception to Database System here....    }    catch(Exception)    {        throw;  //Should I write "throw" Syntax here ?     }}
解决方法 Application_Error是最后一个可以记录在线程(当前正在为您的请求提供服务)中止之前发生的异常的地方.

您不需要抛出任何异常,因为它会在函数退出后自动执行.

这是一个合理的implementation.

我认为您最关心的是如果您的故障转移机制失败该怎么办.在这种情况下,这是您的日志记录.这在计算机中是一个更大的问题,但构建链式故障转移机制通常是浪费时间,因为最终一切都可能失败(对自己研究的一面建议:尽量保持一切尽可能无状态).您最好的选择是拥有一个非常可靠的记录机制作为您的最后手段,99.9%的成功将成功.不打算如何创建这样的机制(并且自己做它不是一个好主意 – 无论如何都要创建自己的记录器,因为有很多技巧可以确保您的日志记录足够高且非突兀)但总的来说,我建议你使用elmah,它可能是目前最好的日志框架.它将满足您的目的.

对于可能获得的极少量错误(在现实生活中他们可能不会这样)我不会失去他们的睡眠.

总结

以上是内存溢出为你收集整理的c# – 我应该抛出Global.asax中的Application_Error处理程序中发生的异常吗?全部内容,希望文章能够帮你解决c# – 我应该抛出Global.asax中的Application_Error处理程序中发生的异常吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1243898.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存