首页 > 其他分享 >WINUI 全局异常捕捉

WINUI 全局异常捕捉

时间:2023-07-26 11:44:06浏览次数:28  
标签:Exception CurrentDomain void WINUI FirstChanceException 捕捉 UnhandledException 全局

因整个解决方案(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}!");
 }

 

标签:Exception,CurrentDomain,void,WINUI,FirstChanceException,捕捉,UnhandledException,全局
From: https://www.cnblogs.com/chengcanghai/p/17579558.html

相关文章

  • python全局变量定义
    Python全局变量定义在编程中,全局变量是在整个程序中都可以被访问和使用的变量。在Python中,我们可以通过在函数外部定义变量来创建全局变量。本文将介绍Python全局变量的定义以及如何在代码中使用它们。定义全局变量Python中定义全局变量非常简单,只需要在函数外部声明变量即可。......
  • springcloud- 分布式session,全局session共享的解决方案
     1.导入依赖     <dependency>       <groupId>org.springframework.session</groupId>       <artifactId>spring-session-data-redis</artifactId> <!--     <version>2.3.0.RELEASE</version>-->......
  • ABP VNext添加全局认证(如何继承AuthorizeFilter)
    前言目前公司采用的开发框架是ABPVNext微服务框架最近突然发现一个问题,ABP中如果控制器或服务层没有加 Authorize特性的话,则不会走身份认证,且不会认证Token如图: 但是项目已开发大半,一个个去补Authorize特性,工作量比较大,也容易产生遗漏就想着以前做单体应用的时候......
  • php超级全局变量
    1、介绍PHP中预定义了几个超级全局变量(superglobals),这意味着它们在一个脚本的全部作用域中都可用。你不需要特别说明,就可以在函数及类中使用。PHP超级全局变量列表:$GLOBALS、$_SERVER、$_REQUEST、$_POST、$_GET、$_FILES、$_ENV、$_COOKIE、$_SESSION2、$GLOBALS$GLOBALS......
  • java 全局数组
    如何实现Java全局数组引言在Java中,全局数组是指在整个程序中都可以访问的数组。开发者通常需要在多个方法或类中使用同一个数组时,就可以使用全局数组。本文将介绍如何实现Java全局数组,并提供详细的步骤和代码示例。步骤下面是实现Java全局数组的步骤,我们可以通过表格来展示:......
  • 全局路由前缀配置
    1、新建RouteConventio.cs文件///<summary>///全局路由前缀配置///</summary>publicclassRouteConventio:IApplicationModelConvention{///<summary>///定义一个路由前缀变量///</summary>privatere......
  • python设计一个跨模块全局变量
    python中有时候需要用到全局变量,并且这个全局变量需要跨文件,跨模块共享.为此,我设计了一个全局对象,它有以下特点:如果为不存在的属性赋值,则会自动生成这个属性,后续就可以正常引用这个属性,就像对象本身具有此属性一样整个对象可以序列化,后续可以从文件中恢复对......
  • Python全局变量和局部变量
    目录1.python的全局变量和局部变量第一种:global定义全局变量在自定义函数内部第二种:全局定义全局变量,并给其赋值2.python类中public,protected,private定义方式3.python中类的实例化1.python的全局变量和局部变量全局变量定义:在函数外部定义的变量。所有函数内部都可以使用......
  • strust2中是如何初始化container并且使其全局单例
    strust2中是如何初始化container并且使其全局单例? StrutsPrepareAndExecuteFilterprotectedPrepareOperationsprepare;protectedExecuteOperationsexecute;Dispatcherdispatcher=init.initDispatcher(config);init()Containercontainer=init......
  • Vue3 响应式全局对象json 动态绑定界面三 (Div块样式 字符串叠加)
    效果 man.js  定义响应式全局对象 globalData//全局对象constglobalData=reactive({missedCallData:"",currentUserTel:"",})app.provide('globalData',globalData);在main.js的函数中改变missedCallData 的值从而改变界面列表//改变全局变量gl......