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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
packetvbvb类,封装了 winpcapa, vbpcap又称为PacketVB,是一种能够被VB调用的数据包捕获开发库,vbpcap封装了WinPcap的API函数的ActiveX库,由Politecnico di Torino开发,使用方法与WinPcap下的Packet.dll关系密切。因此在使用vbpcap编程的时候,应该首先安装WinPcap vbpcap把捕获到的网络数据包存放在内部的一个缓冲器中,解析每个数据包。当每捕获一个数据包时,会触发一个事件,通过该事件,传递被捕获数据包的字节数。然后可以调用vbpcap提供的方法,把捕获到的数据包从内部缓冲器中copy到一个2进制数组中。 目前的vbpcap只能做到捕获数据包,没有对捕获到的数据包进行协议分析,协议分析的工作可以由程序设计者来完成。另外,由于vbpcap是封装的WinPcap的API函数,因此和WinPcap一样,只能捕获数据包,并不能阻止数据包在网络上的传递,因此不能用来开发防火墙一类的程序。 在使用vbpcap编写捕获数据包程序之前,应先最好准备工作,可以参考如下步骤来进行: 1.首先安装2.3-WinPcap版本(废话~~~),注意,一定要安装该版本的winpcap,否则注册vbpcap.dll时会出错(还不知道原因)。 2.解压缩packetvb-1.0.0.3.bin.zip,把其中的vbpcap.dll拷贝到c:\windows\system32目录下 3.“开始”-->“运行”,输入“regsvr32 c:\windows\system32\vbpcap.dll”,注册vbpcap.dll 4.打开VB,“工程”-->“引用”-->“浏览”,在c:\windows\system32中选中vbpcap.dll,确定 5.下面就可以使用vbpcap.dll来编写网络抓包程序了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值