WPF 全局异常处理
在Application中存在三种异常事件EventHandler
- DispatcherUnhandledException
- AppDomain.CurrentDomain.UnhandledException
- TaskScheduler.UnobservedTaskException
其中 DispatcherUnhandledException
是在异常由应用程序引发但未进行处理时发生,但无法捕获多线程异常
AppDomain.CurrentDomain.UnhandledException
专门捕获所有线程中的异常(不包括Task)
TaskScheduler.UnobservedTaskException
捕获Task中的异常
这些异常Handler可以在应用程序出现异常是记录日志,或者挽回应用程序奔溃的问题。
举例说明
以下异常会触发 DispatcherUnhandledException
以及 AppDomain.CurrentDomain.UnhandledException
执行顺序是 DispatcherUnhandledException
=> AppDomain.CurrentDomain.UnhandledException
int x = 0;
_ = 1 / x;
以下异常会触发 AppDomain.CurrentDomain.UnhandledException
new Thread(() => { _ = 1 / x; }).Start();
以下异常会触发 TaskScheduler.UnobservedTaskException
Task中的异常并不是立刻就能捕获到的,而是等到垃圾回收的时候进行捕获。如果想立刻进行捕获则可以调用GC.Collect(0);和GC.WaitForPendingFinalizers();
Task.Run(() => { _ = 1 / x; });
以下是在Prism框架下的异常处理,其中 Task异常不会导致应用程序奔溃,
DispatcherUnhandledException
异常可以通过e.Handled = true;
表明该异常已被处理,不会造成程序崩溃和退出。
AppDomain.CurrentDomain.UnhandledException
在.Net FrameWork中可以通过设置在 App.config <runtime>
节点下添加 <legacyUnhandledExceptionPolicy enabled="1"/>
可以阻止应用程序奔溃,但是这边我使用的是Net6.0所以没成功!
public partial class App{protected override Window CreateShell(){return Container.Resolve<MainWindow>();}protected override void OnInitialized(){#region 全局异常事件配置// 在异常由应用程序引发但未进行处理时发生,但无法捕获多线程异常// UI线程中的异常 UnhandledException 和 DispatcherUnhandledException 都会捕获 执行顺序是 DispatcherUnhandledException => UnhandledExceptionthis.DispatcherUnhandledException += App_DispatcherUnhandledException;// 专门捕获所有线程中的异常 AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;// 专门捕获Task异常TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException;#endregion// 初始化menu 并导航到一个页面IStartService startService = App.Current.MainWindow.DataContext as IStartService;startService.Start();base.OnInitialized();}private void TaskScheduler_UnobservedTaskException(object sender, UnobservedTaskExceptionEventArgs e){Console.WriteLine("---捕获Task异常---");e.SetObserved();}private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e){Console.WriteLine("---所有线程中的异常---");MessageBox.Show((e.ExceptionObject as Exception).Message);//在.Net6.0中无效 --- 在 app.config <runtime> 节点下添加 <legacyUnhandledExceptionPolicy enabled="1"/> 可以阻止应用程序奔溃类似 e.Handle=true}private void App_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e){MessageBox.Show("应用程序异常:" + e.Exception.Message);// 表明该异常已被处理,不会造成程序崩溃和退出e.Handled = true;}protected override void RegisterTypes(IContainerRegistry containerRegistry){}protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog){// 添加Coding模块moduleCatalog.AddModule<CodingModuleModule>();base.ConfigureModuleCatalog(moduleCatalog);}}
相关文章:
WPF 全局异常处理
在Application中存在三种异常事件EventHandler DispatcherUnhandledExceptionAppDomain.CurrentDomain.UnhandledExceptionTaskScheduler.UnobservedTaskException 其中 DispatcherUnhandledException 是在异常由应用程序引发但未进行处理时发生,但无法捕获多线程…...
Flink系列之:Elasticsearch SQL 连接器
Flink系列之:Elasticsearch SQL 连接器 一、Elasticsearch SQL 连接器二、创建 Elasticsearch表三、连接器参数四、Key 处理五、动态索引六、数据类型映射 一、Elasticsearch SQL 连接器 Sink: BatchSink: Streaming Append & Upsert ModeElasticsearch 连接器…...
java中将Map集合、对象、字符串转换为JSON对象
1、Map集合转JSON对象 创建一个Map集合; 新建json对象,并将Map引入json中。 public void demo1(){ //创建一个Map集合Map<String, String> map new HashMap<>();map.put("1729210001","zhangsan");map.put("17292…...
理解Spring中bean的作用域
singleton:Spring Ioc容器中只会存在一个共享的Bean实例,无论有多少个Bean引用它,始终指向同一个对象,作用域为Spring中的缺省(同一package)作用域 prototype:每次通过Spring容器获取prototype定义的bean时,…...
edge中以右键“打印”的方式“保存”当前页面的pdf形式,下载过程中卡进度的问题
目录 问题描述: 可能的问题: 解决: 问题描述: 特殊情况下需要保存网页的pdf形式,但页面没有类似“导出pdf”的功能按钮,可以通过页面右键“打印”的方式“保存”当前页面的pdf形式。在pdf文件下载过程中出…...
c# 使用OpenCV
C#和OpenCV的结合主要通过一个名为OpenCVSharp的库实现。OpenCVSharp是一个C#包装器,它提供了对OpenCV(一个开源的计算机视觉和机器学习库)功能的访问。 安装OpenCVSharp NuGet包: 在Visual Studio中,右键点击你的项目…...
数据库连接问题 - ChatGPT对自身的定位
1.一段关于数据库连接的技术性对话 sweetie,连接数据库的时候,需要在每次读写数据后就把连接释放吗? 亲爱的,连接数据库后,通常会在每次读写数据后将连接释放。这是为了确保数据库连接的及时释放和有效管理。如果不及…...
常见可视化大屏编辑器有哪些?
前言: 在当今数字化时代,可视化大屏编辑器成为了数据展示和决策支持的重要工具。大屏编辑器不仅仅是数据的呈现,更是数据背后的故事的讲述者。它通过图表、图形和实时数据的呈现,为用户提供了全面的信息视图,帮助用户更…...
利用ffmpeg cv2取h265码流视频(转换图片灰屏问题解决)
利用海康威视相机拍出来的视频是H265格式的,相比于常规的H264编码,压缩率更高,但因此如果直接用正常取流方法读取,会出现无法读取的情况 1. 如图h265码流取出图片为灰屏 2 、解决灰屏问题 import subprocess import cv2# 将h265流…...
Android Uri scheme协议file转content
一、Uri的介绍 在Android开发中,Uri(Uniform Resource Identifier)是用于标识和访问各种资源的核心概念。这些资源可能包括文件、网络URL、数据库记录等。在处理这些资源时,我们可能会遇到不同的Uri协议,如file和conte…...
【Jenkins】远程API接口:Java 包装接口使用示例
jenkins-rest 库是一个面向对象的 Java 项目,它通过编程方式提供对 Jenkins REST API 的访问,以访问 Jenkins 提供的一些远程 API。它使用 jclouds 工具包构建,可以轻松扩展以支持更多 REST 端点。其功能集不断发展,用户可以通过拉…...
未能加载工具箱项问题的解决
解决办法是项目属性要设置成any cpu 在解决方案里的所有项目上右键,属性,生成,看目标平台是不是都设置成了any cpu...
算法模板之栈图文详解
🌈个人主页:聆风吟 🔥系列专栏:算法模板、数据结构 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言一. ⛳️模拟栈1.1 🔔用数组模拟实现栈1.1.1 👻栈的定义1.1.…...
Ajax Search Pro Live WordPress网站内容实时搜索插件
点击阅读Ajax Search Pro Live WordPress网站内容实时搜索插件原文 Ajax Search Pro Live WordPress网站内容实时搜索插件是 WordPress 最好的实时搜索引擎插件。高度可定制,具有许多功能和选项,可提供最佳结果!用更美观、更高效的搜索引擎替…...
mysql SQL执行超时问题
show variables like max_execution_time 使用这个命令查看了,没有设置sql执行超时时间,那么大概率问题就出在阿里的Druid数据库连接池出了问题 尝试着socketTimeout由60000毫秒改成10000毫秒,果然执行了十几秒就超时报错了 socketTime…...
51单片机基于时间片轮转的简单rtos
早就想写写这个了,正好赶上有点时间,写了一下基于51单片机的时间片轮转调度系统,简单的rtos,呵呵。直接上代码。 //基于51单片机时间片轮转的简单rtos。 #include"reg52.h" sbit led1 P2^7; sbit led2 P2^0; sbit key…...
python pycurl 安装使用
python pycurl 安装使用 本文主要讲下pycurl 安装使用. 1.安装 首先使用 pip 命令安装. pip install pycurl 输出如下: Collecting pycurlUsing cached pycurl-7.45.2.tar.gz (234 kB)ERROR: Command errored out with exit status 1:command: /usr/bin/python3 -c impor…...
C语言数据结构-排序
文章目录 1 排序的概念及运用1.1 排序的概念1.2 排序的应用 2 插入排序2.1 直接插入排序2.2 希尔排序2.3 直接排序和希尔排序对比 3 选择排序3.1 堆排序3.2 直接选择排序 4 交换排序4.1 冒泡排序4.2 快速排序4.2.1 挖坑法14.2.2 挖坑法24.2.3 挖坑法3 5 并归排序6 十万级别数据…...
Spring AOP入门指南:轻松掌握面向切面编程的基础知识
面向切面编程 1,AOP简介1.1 什么是AOP?1.2 AOP作用1.3 AOP核心概念 2,AOP入门案例2.1 需求分析2.2 思路分析2.3 环境准备2.4 AOP实现步骤步骤1:添加依赖步骤2:定义接口与实现类步骤3:定义通知类和通知步骤4:定义切入点步骤5:制作切面步骤6:将通知类配给…...
【顶级快刊】IEEE(Trans),审稿快仅2个月录用,入选CCF-B,现在投最快!
计算机类 • 好刊解读 今天小编带来IEEE旗下计算机领域顶刊,顶级快刊,CCF-B类推荐,如您有投稿需求,可作为重点关注!后文有相关领域真实发表案例,供您投稿参考~ 01 期刊简介 IEEE Transactions on Affect…...
深入浅出堆排序: 高效算法背后的原理与性能
🎬 鸽芷咕:个人主页 🔥 个人专栏: 《linux深造日志》 《高效算法》 ⛺️生活的理想,就是为了理想的生活! 📋 前言 🌈堆排序一个基于二叉堆数据结构的排序算法,其稳定性和排序效率在八大排序中也…...
Golang实践录:gin绑定解析json的两种方法
本文介绍 Golang 的 gin 框架接收json数据并解析的2种方法。 起因及排查 某微服务工程,最近测试发现请求超时,由于特殊原因超时较短,如果请求处理耗时超过1秒则认为失败。排查发现,可能是gin接收解析json数据存在耗时,…...
Hypervisor Display架构
Hypervisor Display架构部分 1,所有LA侧的APP与显示相关的调用最终都会交由SurfaceFlinger处理 2,SurfaceFlinger会最终调用android.hardware.graphics.composer2.4-service服务 3,android.hardware.graphics.composer2.4-service服务会调用G…...
基于ssm二手车交易平台的设计论文
摘 要 进入21世纪网络和计算机得到了飞速发展,并和生活进行了紧密的结合。目前,网络的运行速度以达到了千兆,覆盖范围更是深入到生活中的角角落落。这就促使二手交易网站的发展。二手交易网站可以实现远程购物,远程选择喜欢的商品…...
IDEA 设置 SpringBoot logback 彩色日志(附配置文件)
1、背景说明 最开始使用 SpringBoot 时,控制台日志是带彩色的,让人眼前一亮😄 后来彩色莫名丢失,由于影响不大,一直没有处理。 2、配置彩色 最近找到了解决方法(其实是因为自定义 logback.xml࿰…...
数学建模学习笔记-皮尔逊相关系数
内容:皮尔逊相关系数 一.概念:是一个和线性线关的相关性系数 1.协方差概念: 协方差受到量纲的影响因此需要剔除 2.相关性的误区 根据这个结论,我们在计算该系数之前需要确定是否为线性函数 二.相关性的计算 1.Matlabÿ…...
随笔:集成学习:关于随机森林,梯度提升机的东拉西扯
1.集成学习 这里不会描述算法过程。 当我们有许多学习器对同一个任务做出判断,他们预测的概率可能各不相同,比如预测一个男生(小徐)会不会喜欢另一个女生(小雪),支持向量机算出来小徐爱上小雪的概率是0.8,朴素贝叶斯认为是0.3&a…...
多款实用个人年终总结模板,助力你的年度汇报!
临近年末,相信很多职场人这阵子都在忙着撰写个人年终总结,这份材料是对自己过去一年的工作进行的回顾和总结。撰写年终总结,其实也是一个非常重要的自我反思过程,可以帮助我们明确自己的目标,找出需要改进的地方&#…...
【C语言】动态内存管理基础知识——动态通讯录,如何实现通讯录容量的动态化
引言 动态内存管理的函数有:malloc,calloc,ralloc,free,本文讲解动态内存函数和使用,如何进行动态内存管理,实现通讯录联系人容量的动态化,对常见动态内存错误进行总结。 ✨ 猪巴戒:个人主页✨ 所属专栏:《C语言进阶》…...
Centos9(Stream)配置Let‘s Encrypt (免费https证书)
1. 安装snap,用来安装certbot: sudo dnf install epel-release sudo dnf upgrade sudo yum install snapd sudo systemctl enable --now snapd.socket sudo ln -s /var/lib/snapd/snap /snap snap install core snap refresh core 2. 安装 certbot命令…...
杭州强龙网站建设/在哪里查关键词排名
来源:CT、MRI诊断指南第一篇 如何阅读CT、MRI图像第一节 影像诊断原则与步骤医学影像诊断包括X线、CT、MRI、超声等,是重要的临床诊断方法之一。为了达到正确诊断,必须遵循一定的诊断原则和步骤,才能全面、客观地作出结…...
个人网站的网页/百度推广公司哪家比较靠谱
采用递归的方式实现基本的四则运算。 首先弄清楚四则运算的优先级,比如一个混杂加法和减法的式子,减法的优先级要高于加法,也就是你从左往右算,先算减法是正确的,先算加法会得到错误的答案。比如3-21,先算…...
一般做门户网站多少钱/企业网站设计图片
一、概述 要保持追踪内存中的对象,Python使用了引用计数这一简单的技术。 二、引用计数的增减 2.1 增加引用计数 当对象被创建并(将其引用)赋值给变量时,该对象的引用计数被设置为1。 对象的引用计数增加的情况: 对象被…...
外贸开发网站开发/交换友链平台
依赖实际上是大面积存在的,一个Java类是无法完成太多的工作的,所以需要依赖其他的Class来实现目的。例如,business层会依赖data层获取数据,那么dataService就是bizService的依赖。 public class BusinessServiceImpl { public lo…...
知名的网站建设公司/关键词免费下载
1.下列除哪组外都是镇心安神药组() A.龙骨、牡蛎 B.朱砂、磁石 C.龟板、鳖甲 D.珍珠、琥珀 E.珍珠母、紫贝齿 2.下列忌火煅的药物是() A.青礞石 B.牡蛎 C.朱砂 D.石决明 E.代赭石 3.既能镇惊安神,平肝潜阳…...
网站注意事项/建立自己的网站平台
PostgreSQL常用指令前言一、操作数据库命令1、创建数据库命令2、查看已经存在数据库3、进入数据库4、删除数据库二、操作表命令1、查看表是否创建成功2、查看表格信息3、列举表三、其他命令1、登录2、退出psql总结前言 操作PostgreSQL的命令主要包含操作命令,转换命…...