当前位置: 首页 > news >正文

dotnet未捕获异常导致系统崩溃问题

一般情况下我们业务代码不需要自己捕获异常,因为目前我们常用框架都会自行处理异常,但是有些情况下需要自己处理异常,否则未处理的异常抛出会导致程序崩溃退出。

1.全局异常捕获

// 1. AppDomain 未处理异常
AppDomain.CurrentDomain.UnhandledException += (sender, e) =>
{var exception = e.ExceptionObject as Exception;LogException(exception, "UnhandledException");if (e.IsTerminating){// 进程即将终止EmergencyShutdown();}
};// 2. Task 未观察异常 (.NET 4.0+)
TaskScheduler.UnobservedTaskException += (sender, e) =>
{LogException(e.Exception, "UnobservedTaskException");e.SetObserved(); // 防止进程崩溃
};// 3. Windows Forms
if (Application.MessageLoop)
{Application.ThreadException += (sender, e) =>{LogException(e.ception, "ThreadException");};Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
}// 4. WPF
Dispatcher.CurrentDispatcher.UnhandledException += (sender, e) =>
{LogException(e.Exception, "DispatcherUnhandledException");e.Handled = true; // 阻止进程崩溃
};// 5. ASP.NET Core
// 在 Program.cs 中使用 UseExceptionHandler 中间件

2.Timer异常 和 异步void方法异常

定时器的事件方法中的代码抛出来的异常,无法被全局异常捕获,同样异步void方法异常也是的,需要自行捕获异常。

public class SafeTimer
{private readonly Timer _timer;public SafeTimer(){_timer = new Timer(OnTimerCallback);}private void OnTimerCallback(object state){try{// 业务逻辑}catch (Exception ex){// 记录日志,通知主线程LogException(ex);}}
}

3.StackOverflowException和OutOfMemoryException

这两个异常业务无法捕获的,因为它们发生时,程序以及没有办法在执行如何代码了,只能靠上个文章中说的崩溃自动收集dump,然后去分析dump找出问题。
还有其他比如调用c代码等不安全代码,大部分时候也时无法捕获,如果它们引起异常也很难捕获。

http://www.jsqmd.com/news/111430/

相关文章:

  • Scikit-Learn 1.8引入 Array API,支持 PyTorch 与 CuPy 张量的原生 GPU 加速
  • Day33PC与移动端的适配方案简介
  • 无代码解决方案:解锁数字化转型的普惠路径
  • 【Agent】MemOS 源码笔记---(6)---MemScheduler -- 总体
  • 震惊!IF9.8,中科院1区TOP或被SCI剔除!官网已“消失”......
  • 杂乱的一些note
  • 21、Samba使用与故障排查全解析
  • C++输入输出(cin和cout)的用法
  • 深入理解Golang并发模型与CSP理论
  • Oracle索引技术:理论与实操全解析
  • 23、Samba使用与SSL配置全解析
  • 三菱PLC与组态王打造饮料自动装箱机控制系统
  • 【Nature Communications‘24‘06】预训练多模态大语言模型经过 SkinGPT-4 提升皮肤病学诊断能力
  • 品牌营销战略策划公司选哪家靠谱?奇正沐古 - 资讯焦点
  • 100 天学会爬虫 · Day 12:为什么要给爬虫加随机 User-Agent?原理与实战
  • 宪法守护童年:向霸凌和诈骗说“不” - 资讯焦点
  • 2025年郑州头部吊顶式空调机组设计多少钱,空气幕/表冷器/卧式暗装风机盘管/吊顶式空调机组/工业暖风机吊顶式空调机组采购找哪家 - 品牌推荐师
  • RUI Builder-图形化UI设计-工程范例
  • argocd-案例
  • 探秘新能源整车动力性经济性仿真模型:精确模拟驱动未来出行
  • 人工智能如何改变 Anthropic 的工作方式
  • 从孤岛到桥梁:我的个人知识管理进化史
  • Pitch:上下点头(俯仰) Yaw:左右转向(偏航) Roll:侧身翻滚(倾斜)
  • 谢飞机的面试之旅:如何在互联网大厂面试中脱颖而出
  • 100G双光口网卡技术解析:Intel E810-CAM2方案的性能与应用突破
  • USB挂起(Suspend)和远程唤醒(Remote Wakeup)之间的关系
  • 2025年天津热门的消防排烟风机批发哪家好,工业暖风机/卧式暗装风机盘管/卡式风机盘管/直膨式空调机组/吊顶式空调机组消防排烟风机设计排行榜 - 品牌推荐师
  • 英语_阅读_What can stand for China_待读
  • WinAPI 极简教程:超便捷的 Windows 接口入门
  • 基于全姿态弹道导弹RC数据库的宽带回波仿真