VB.net 捕获项目全局异常

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

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 Class

End Namespace

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

时间: 2024-11-08 22:38:58

VB.net 捕获项目全局异常的相关文章

【转】 Android自定义捕获Application全局异常

大家都知道,现在安装Android系统的手机版本和设备千差万别,在模拟器上运行良好的程序安装到某款手机上说不定就出现崩溃的现象,开发者个人不可能购买所有设备逐个调试,所以在程序发布出去之后,如果出现了崩溃现象,开发者应该及时获取在该设备上导致崩溃的信息,这对于下一个版本的bug修复帮助极大,所以今天就来介绍一下如何在程序崩溃的情况下收集相关的设备参数信息和具体的异常信息,并发送这些信息到服务器供开发者分析和调试程序. 我们先建立一个crash项目,项目结构如图: 在MainActivity.ja

Android 捕获系统全局异常

Android系统的"程序异常退出",给应用的用户体验造成不良影响.为了捕获应用运行时异常并给出友好提示,便可继承UncaughtExceptionHandler类来处理.通过Thread.setDefaultUncaughtExceptionHandler()方法将异常处理类设置到线程上即可. 1.异常处理类,代码如下: [java] view plaincopy public class CrashHandler implements UncaughtExceptionHandle

在Android中自定义捕获Application全局异常,可以替换掉系统的强制退出对话框(很有参考价值与实用价值)

转载自: http://blog.csdn.net/jdsjlzx/article/details/7606423

捕获全局异常UncaughtExceptionHandler

标签:捕获全局异常,UncaughtExceptionHandler ========================网上相关博客======================== 参考:http://blog.csdn.net/jdsjlzx/article/details/7606423 Android自定义捕获Application全局异常 http://git.oschina.net/oschina/android-app 大家可以参考. 大家都知道,现在安装Android系统的手机版本和

Android应用源码之捕获全局异常

Android应用源码之捕获全局异常 本项目就是一个简单的全局异常捕捉例子,捕捉到异常以后可以把异常信息写入文件以供后来分析或者用友好的方式进行提示后再退出程序. 下载地址:http://www.devstore.cn/code/info/630.html

SpringBoot配置全局异常捕获

1 SpringBoot配置全局的异常捕获 项目的说明 配置thymeleaf作为视图模板 ExceptionController.java模拟测试用 MyAjaxExceptionHandler.java捕获到异常以ajax形式返回 MyExceptionHandler.java捕获到异常以页面形式返回 ajaxerror.html这个是测试返回ajax异常的页面 error.html以页面形式返回的异常到这个页面 1.1 页面跳转形式 1.1.1 配置 MyExceptionHandler.

Configure、中间件与ErrorHandlingMiddleware全局异常捕获

一.Configure Startup.cs中的Configure方法主要是http处理管道配置.中间件和一些系统配置,其中 IApplicationBuilder: 定义一个类,该类提供配置应用程序请求的机制管道.通过IApplicationBuilder下的run.use方法传入管道处理方法.这是最常用方法,对于一个真实环境的应用基本上都需要比如权限验证.跨域.异常处理等. IHostingEnvironment:提供有关正在运行的应用程序的web托管环境的信息 简单来说Configure方

Spring 框架——利用HandlerExceptionResolver实现全局异常捕获

https://blog.csdn.net/qq_22172133/article/details/82147630 微信一.需求描述        因为在项目中,我们不可否认的会出现异常,而且这些异常并没有进行捕获.经常出现的bug如空指针异常等等.在之前的项目中,如果我们没有进行任何配置,那么容器会自动打印错误的信息,如果tomcat的404页面,400页面等等.如果我们在web.xml中进行如下配置,就会拦截错误,然后跳转到指定的错误页面. <error-page>    <err

springboot捕获全局异常和配置多数据源

目录 配置多数据源 写两个数据源的配置类. @(springboot捕获全局异常和配置多数据源) 捕获全局异常是在项目运行期间如果调用的某一个方法出现了运行时异常,则会捕获,并且给出回馈. 首先需要建一个包,包里新建一个捕获异常类GlobalExceptionHandler.前提是springboot的启动类的扫描注解ComponentScan()要扫描到. /** * 用于捕获全局异常 */ @ControllerAdvice//控制器切面 public class GlobalExcepti