我为学生课程注册创建了一个表单,其中包含三个输入文本框:
然后我有另一个文本框用于显示学生信息。我将这个仅显示文本框称为“课程”文本框。
我想在此表单上使用结构化异常处理(Try
/ Catch
块)。我怎么能在这种形式上做到这一点。
答案 0 :(得分:4)
VB.Net中的异常处理非常简单。以下代码是try / catch块的结构。
Try
'This is the code you wish to try that might give an error.
Catch ex As Exception
'This is where you end up if an error occurs.
End Try
假设您的表单上有一个按钮,并且您希望确保在按下按钮后,您所有的指令都将被错误处理。以下代码说明。首先删除一个按钮并将其命名为ValidationButton。如果双击新按钮,在后面的代码中将看到一个处理click事件的新函数。将try catch块添加到它中,如下所示。
Private Sub ValidationButton_Click(sender As System.Object, e As System.EventArgs) Handles ValidationButton.Click
Try
Catch ex As Exception
End Try
End Sub
现在页面有一个按钮,其中的代码位于try / catch块中。我们只需将我们想要的代码放在里面。让我们放一些会抛出错误的东西,然后我们会显示那个错误。
Private Sub ValidationButton_Click(sender As System.Object, e As System.EventArgs) Handles ValidationButton.Click
Try
Dim x As Integer = 1
Dim y As Integer = 0
Dim z As Integer = x / y
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
弹出一个消息框,告诉我们遇到错误,“算术运算导致溢出”。这是因为我们不能将其除以零。如果你没有把它放在try catch中,程序就会崩溃。
因此,有了这些信息,请将您的try / catch放在可能出错的地方。如果您知道您的错误可能是什么,您甚至可以在那里使用代码来执行其他操作。在我们的示例中,我们可能希望告诉用户不要除以零。
答案 1 :(得分:2)
除了捕获特定代码行中的错误外,您还可以捕获未处理的错误。通过Main Procedure
启动应用程序,这是最简单的方法Module Program
Public Shared Sub Main()
AddHandler Application.ThreadException, AddressOf UIThreadException
' Force all Windows Forms errors to go through our handler.
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException)
' Start the main Form
Application.Run(New frmMain())
End Sub
Private Shared Sub UIThreadException(ByVal sender As Object, _
ByVal t As ThreadExceptionEventArgs)
' Handle the error here
End Sub
End Module
您可以在MSDN上阅读有关此主题的更多信息:Application.ThreadException Event