2

我使用以下代码在我的应用程序中使用 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 个问题.. 为什么 Try/Catch 不接这个?如果服务器不在线,我该如何编程来捕获此错误,以便它可以在此之后继续运行其余的例程?

在此先感谢瑞克

4

1 回答 1

1

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

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

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

二:在代码上添加Handler:

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

注意不要忘记删除处理程序!

评论

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

于 2018-09-21T17:31:38.860 回答