分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

VB.net 捕获项目全局异常

发布时间:2023-09-06 01:56责任编辑:熊小新关键词:暂无标签

在项目中添加如下代码:新建窗口来显示异常信息。

Namespace My ???‘全局错误处理,新的解决方案直接添加本ApplicationEvents.vb 到工程即可 ???‘添加后还需要一个From用来显示错误。如果到这步还不会则需要先打好基础啦 ???‘======================================================== ???‘以下事件可用于MyApplication: ???‘ 启动:应用程序启动时,在创建启动窗体之前引发。 ???‘ 关闭:所有申请表格关闭后提出。 如果应用程序异常终止,则不会引发此事件。 ???‘ UnhandledException:如果应用程序遇到未处理的异常,则引发。 ???‘ StartupNextInstance:当启动单实例应用程序并且应用程序已经处于活动状态时引发。 ???‘ NetworkAvailabilityChanged:当网络连接连接或断开连接时引发。 ???Partial Friend Class MyApplication ???????‘我们捕捉到的全局例外之一是不是线程安全的,所以我们需要首先使其线程安全。 ???????Private Delegate Sub SafeApplicationThreadException(ByVal sender As Object, ByVal e As Threading.ThreadExceptionEventArgs) ???????Private Sub ShowDebugOutput(ByVal ex As Exception) ???????????‘显示输出错误的From窗体 ???????????Dim frmD As New Form2() ???????????‘显示解决方案名 ???????????frmD.TextBox1.AppendText("Product Name:" & My.Application.Info.ProductName & vbNewLine) ???????????‘显示当前版本号 ???????????frmD.TextBox1.AppendText("Product Version:" & My.Application.Info.Version.ToString() & vbNewLine) ???????????frmD.TextBox1.AppendText("OS Name:" & My.Computer.Info.OSFullName & vbNewLine) ???????????frmD.TextBox1.AppendText("OS Version:" & My.Computer.Info.OSVersion & vbNewLine) ???????????‘NET2.0下判断x86还是64 ???????????If Environment.GetEnvironmentVariable("ProgramFiles(x86)") = "" Then ???????????????frmD.TextBox1.AppendText("OS Platform:x86" & vbNewLine) ???????????Else ???????????????frmD.TextBox1.AppendText("OS Platform:x64" & vbNewLine) ???????????End If ???????????frmD.TextBox1.AppendText("--------------------" & vbCrLf) ???????????‘显示错误 ???????????frmD.TextBox1.AppendText(ex.ToString()) ???????????frmD.ShowDialog() ???????????‘执行应用程序清理 ???????????‘TODO: 在这里添加您的应用程序清理代码。 ???????????‘退出应用程序 - 或尝试从异常中恢复: ???????????Environment.Exit(0) ???????End Sub ???????Private Sub MyApplication_Startup(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) Handles Me.Startup ???????????‘ 有三个地方可以捕获所有全球未处理的异常: ???????????‘ AppDomain.CurrentDomain.UnhandledException event。 ???????????‘ System.Windows.Forms.Application.ThreadException事件。 ???????????‘ MyApplication.UnhandledException事件。 ???????????AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf AppDomain_UnhandledException ???????????AddHandler System.Windows.Forms.Application.ThreadException, AddressOf app_ThreadException ???????End Sub ???????Private Sub app_ThreadException(ByVal sender As Object, ByVal e As Threading.ThreadExceptionEventArgs) ???????????‘这不是线程安全的,所以使其线程安全。 ???????????If MainForm.InvokeRequired Then ???????????????‘调用主线程 ???????????????MainForm.Invoke(New SafeApplicationThreadException(AddressOf app_ThreadException), New Object() {sender, e}) ???????????Else ???????????????ShowDebugOutput(e.Exception) ???????????End If ???????End Sub ???????Private Sub AppDomain_UnhandledException(ByVal sender As Object, ByVal e As UnhandledExceptionEventArgs) ???????????ShowDebugOutput(DirectCast(e.ExceptionObject, Exception)) ???????End Sub ???????Private Sub MyApplication_UnhandledException(sender As Object, e As Microsoft.VisualBasic.ApplicationServices.UnhandledExceptionEventArgs) Handles Me.UnhandledException ???????????ShowDebugOutput(e.Exception) ???????End Sub ???End ClassEnd Namespace

VB.net 捕获项目全局异常

原文地址:https://www.cnblogs.com/profession/p/9091194.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved