WINUI 全局异常捕捉
因整个解决方案(solution)由多个项目(project)组成,而程序在运行时,在程序入口的app class中添加的UnhandledException事件(Application.UnhandledException)只能捕捉到主程序的异常,
导致不能捕捉到其他类库的异常。通过查找文档与相应资料,了解到可以通过AppDomain.CurrentDomain.FirstChanceException 进行相应的捕捉,其详细代码如下:
/// <summary> /// Invoked when the application is launched. /// </summary> /// <param name="args">Details about the launch request and process.</param> protected override void OnLaunched(Microsoft.UI.Xaml.LaunchActivatedEventArgs args) { OnlyOneApp(); InitFrame(args); //日志初始化 NlogHelper.Init(); UnhandledException += App_UnhandledException; AppDomain.CurrentDomain.FirstChanceException += CurrentDomain_FirstChanceException; dispatcher = DispatcherQueue.GetForCurrentThread(); } static DispatcherQueue dispatcher; private void CurrentDomain_FirstChanceException(object sender, System.Runtime.ExceptionServices.FirstChanceExceptionEventArgs e) { Exception exception = e.Exception; if (exception != null) { NlogHelper.Logger.Error($"未处理异常 \r\n{e.Exception}"); dispatcher.TryEnqueue(() => { MessageHelper.OpenMessageWindow?.Invoke(true, $"程序异常:\r\n{e.Exception}!"); }); } } private void App_UnhandledException(object sender, Microsoft.UI.Xaml.UnhandledExceptionEventArgs e) { NlogHelper.Logger.Error($"未处理异常 {e.Exception}"); e.Handled = true; MessageHelper.OpenMessageWindow?.Invoke(true, $"程序异常:{e.Exception}!"); }
*****有道无术,术尚可求;有术无道,止于术。*****
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App