C# 异常捕获记录

mfc198666_002 2011-02-11 01:42:45
初学C#有些地方不懂,请教一下:

我想记录所有发生过的异常,无论这个异常是否被捕获过。
未捕获的异常记录方法如下:

//捕获当前未绑定异常
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
//捕获线程异常
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);

可是如果这个异常已经被捕获了,应该如何记录呢?
有人说:继承Exception自定一个异常类,如果发生异常就在异常类里记录?(这样对吗?如果这样对的话,那么异常类需要被throw 才能抓取到,这样做记录起来不是更麻烦么?)

有没有什么办法可以很方便的记录所有发生过的异常?

...全文
167 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
mfc198666_002 2011-02-11
  • 打赏
  • 举报
回复
好了基本明白了,谢谢大家指导
  • 打赏
  • 举报
回复
既然被人捕获而不继续抛出异常了,这就意味着它全权负责,不给程序的继续正常运行留下任何隐患。
  • 打赏
  • 举报
回复
[Quote=引用楼主 mfc198666_002 的回复:]
可是如果这个异常已经被捕获了,应该如何记录呢?
[/Quote]

既然不继续抛出异常,你再捕获他有什么意义呢?

遇到那些画蛇添足地胡乱隐藏异常触发点(具体语句)的程序员写的程序,不用考虑怎么“记录”做这些语句,先考虑这样的程序员有没有必要放在团队中吧!
silentcross 2011-02-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 mfc198666_002 的回复:]

上面打错了:

如果已捕获的异常怎么办? 是不是已捕获的异常在一般的项目中都不会去记录日志呢?还是说每个已捕获的异常里都要写一行代码记录一下?
[/Quote]

是的,每个捕获的异常都要写一行代码记录,一般可能的异常都要捕获防止扩散
mfc198666_002 2011-02-11
  • 打赏
  • 举报
回复
上面打错了:

如果已捕获的异常怎么办? 是不是已捕获的异常在一般的项目中都不会去记录日志呢?还是说每个已捕获的异常里都要写一行代码记录一下?
mfc198666_002 2011-02-11
  • 打赏
  • 举报
回复
谢谢2位的回答 ,但是你俩的方法好像是,只有在这个异常没有被捕获的情况下,才能记录啊?

如果没捕获的异常怎么办? 是不是一般没有捕获的异常在一般的项目中都不会去记录日志呢?还是说每个没捕获的异常都要一行代码记录一下?
dazhabai 2011-02-11
  • 打赏
  • 举报
回复

private static void UnhandledExceptionHandler(object sender, UnhandledExceptionEventArgs e)
{
if (log.IsErrorEnabled)
{
//ToDo: 字符串
//log.Error(Resource.ResManager.Instance().GetMsg("BF_CH_INFO_APPDOMAIN_EX"));// "应用程序域异常"
log.Error(e.ExceptionObject.ToString());
}
}
wuyq11 2011-02-11
  • 打赏
  • 举报
回复
var handler = new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
AppDomain.CurrentDomain.UnhandledException += handler;
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
Debug.Print("{0}发生系统异常:{1}", DateTime.Now, e.ExceptionObject.ToString());
}
log4net记录

Unity游戏开发框架系统是一个基于模块化架构和插件化设计的综合性游戏开发框架,专为Unity引擎环境下的游戏项目提供高效、可扩展的解决方案。该系统集成了资源加载、配置管理、数据加载、UI管理、日志管理、动画系统和特效系统等核心功能模块,旨在简化游戏开发流程,提升开发效率和代码质量。 在技术实现上,Unity游戏开发框架系统采用C#作为主要编程语言,结合Unity引擎的强大功能,实现了高性能的游戏逻辑处理。系统集成了uLua技术,支持热更新功能,使游戏能够在运行时动态加载和更新脚本,大大缩短了迭代周期。同时,系统通过TCP协议实现了网络通信模块,支持多人在线游戏的开发需求。在持续集成方面,系统与Jenkins工具集成,实现了自动化构建和部署流程,确保了项目的稳定性和可维护性。 架构设计上,Unity游戏开发框架系统采用了模块化架构、插件化架构和分层架构相结合的方式。模块化架构使得各个功能模块(如资源加载、UI管理等)能够独立开发和测试,降低了系统的耦合度。插件化架构允许开发者根据需要灵活添加或移除功能模块,增强了系统的可扩展性。分层架构则将系统分为表现层、业务逻辑层和数据访问层,提高了代码的可读性和可维护性。此外,系统广泛应用了单例模式、工厂模式和观察者模式等设计模式,确保了代码的复用性和系统的稳定性。 Unity游戏开发框架系统适用于多种游戏开发场景,包括但不限于角色扮演游戏(RPG)、动作游戏、策略游戏和休闲游戏等。无论是独立开发者还是大型游戏团队,都可以利用该系统快速搭建游戏原型,实现复杂的游戏功能。系统特别适合作为毕业设计项目,因为它涵盖了软件工程的核心概念,如架构设计、模块化开发和设计模式应用,能够帮助学生深入理解游戏开发的全流程。 作为毕 【版权说明】源码来源于网络,遵循原项目开源协议。付费内容为本人原创论文,包含技术分析和实现思路。仅供学习交流使用。
本资源提供了一套基于MATLAB平台开发的三维航迹规划完整解决方案,包含核心算法源代码、详尽的项目说明文档以及相关测试数据。该方案特别适用于高校毕业设计、专业课程实践及实际项目开发等场景。所有程序代码均经过系统化测试验证,具备良好的可靠性与可扩展性,用户可直接参考或基于现有框架进行功能拓展与二次开发。 本项目聚焦于解决多约束条件下的飞行器三维航迹规划这一数学建模与工程控制领域的经典问题。在复杂环境下的快速航迹规划是自主飞行器智能控制的关键技术之一。受限于机载系统结构,此类飞行器的定位模块往往存在累积误差,若未及时校正,可能导致导航精度下降乃至任务失败。因此,如何在飞行过程中动态修正定位偏差,成为航迹规划中必须处理的核心环节。 假设飞行器的作业区域已预先定义,起始点为A,目标点为B。航迹规划需满足以下约束条件:飞行器在三维空间中行进时,其定位误差包含垂直与水平两个分量。每飞行单位距离,垂直误差与水平误差均会累积增加δ个单位。在抵达终点B时,两项误差均需控制在阈值θ个单位以内。为简化模型,设定当两项误差均未超过θ时,飞行器仍可沿预定航迹正常飞行。 飞行区域内散布若干预设的安全校正点,可用于对特定类型的定位误差进行重置。校正点依地形预先标定,分为垂直误差校正点与水平误差校正点两类(例如在示意图中,黄色标记代表水平校正点,蓝色标记代表垂直校正点)。这些校正点的空间分布受地理环境影响,并无统一规律。通过合理规划航迹,使飞行器依次经过一系列校正点,对累积误差进行阶段性修正,从而确保在满足终端误差约束的前提下,实现从起点A到终点B的安全、精确导航。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!

111,122

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧