不停止捕获异常消息



我有一个简单的Try Catch函数,如:

Try
'do that
Catch
'didn't work now try again
End Try

现在我希望错误/捕获消息显示为Messagebox,它与:

Catch ex As Exception
Messagebox.Show(ex.message)

的问题是,它总是停止/退出应用程序后显示我想要防止的错误信息。这应该尝试一些东西,直到它工作,并始终显示错误消息而不停止。这可能吗?我需要它作为编译的exe,所以只是调试不会是一个选项。

As explain what I am trying to do:基本上我有一个计时器,每10秒执行一个请求到我的服务器。它检查我的服务器是否启动并连接。如果它不能到达我的服务器,它应该准确地显示我的消息,为什么它没有连接,但它不应该停止,它应该继续ping我的服务器10秒后再次尝试,直到它的工作。问题是异常消息有时会改变所以我真的需要exception message作为输出

听起来你现在有一个方法有时会抛出这样的问题:

Public Sub CheckServer()
' do something to test the server
End Function

如果代码不像那样与它自己的方法隔离,应该是

你想这样称呼它:

Try 
CheckServer()
Catch ex As Exception
MessageBox.Show(...)
End Try

我建议将Try/Catch移动到方法内部并使其返回一个值:

Public Function CheckServer() As String
Try
' do something to test the server
Catch ex As Exception
Return ex.Message
End Try
Return String.Empty
End Function

然后像这样调用它:

Dim errorMessage As String = CheckServer()
If Not String.IsNullOrEmpty(errorMessage) Then
SendAlert(errorMessage)
End If

这里还有一个单独的alert方法:

Public Sub SendAlert(alertText As String)
SomeControl.Text += $"{Now} -- {alertText}{vbCrLf}"
End Sub

注意我没有使用MessageBox,因为它阻塞了你的UI。但这里的想法是,当警报到来时,这样做可以很容易地改变你想要做的事情。例如,您可以创建一个toast通知。

因为你使用的是WinForms,你可以在这里做的另一件事是定义并引发一个事件,而不是返回一个值。

是否使用TCPClient连接??如果你是,你可以只写一个IsConnected代码。TCP客户端保持连接,直到服务器或客户端退出。

服务器不接受连接时最常见的错误消息是" server did not proper response in time message "

不断地向服务器发送请求并不理想。当连接丢失时,您需要一个通知。然后将计时器设置为不断尝试重新连接。

最新更新