在VB.net中使用NDDE如何正确捕获错误?

时间:2018-09-21 00:29:08

标签: vb.net ndde

我正在使用以下代码在应用程序中使用NDDE

Public WithEvents DXViewDDE As New NDde.Client.DdeClient("DXView", "DDEServer", DDEClient)
Case DXViewServer
                If Not DXViewDDE.IsConnected Then
                    Try
                        DXViewDDE.Connect() 'Here it throws an unhandled error
                        AddHandler DXViewDDE.Disconnected, AddressOf DXViewDDEOnDisconnected
                        DXViewDDE.StartAdvise("SpotPrefix", 1, True, 60000)
                        DXViewDDE.StartAdvise("DDECommand", 1, True, 60000)
                        DDEClient.SpotPrefix.Text = DXViewDDE.Request("SpotPrefix", 60000)
                        DDEClient.DDELookup.Text = DXViewDDE.Request("DDECommand", 60000)
                        SetServerConnected(theServer, DXViewDDE.IsConnected)
                    Catch
                        SetServerConnected(theServer, False)
                    End Try
                End If

如果运行该例程的服务器正确连接并继续运行,但是如果服务器脱机,则会出现以下错误 !(http:www.n2amg.com/DDEError.jpg)

2个问题..为什么“尝试/捕获”不起作用?以及服务器不在线时如何编程以捕获此错误,以便在此之后可以继续运行其余例程?

预先感谢 里克

1 个答案:

答案 0 :(得分:1)

您可以尝试声明一个函数来处理未处理的错误,如下所示:

第一 :创建自己的函数来处理错误

    Private Sub UnExHandler(ByVal sender As Object, ByVal e As UnhandledExceptionEventArgs)
        'Do your stuff
    End Sub

第二步: 在代码上添加处理程序:

Public WithEvents DXViewDDE As New NDde.Client.DdeClient("DXView", "DDEServer", DDEClient)
    AddHandler currentDomain.UnhandledException, AddressOf UnExHandler
    'Your things
    RemoveHandler currentDomain.UnhandledException, AddressOf UnExHandler

N.B。 。不要忘记删除处理程序!

备注

这将捕获代码未处理的每个异常。它必须抓住您的错误!