出错时怎么办:处理错误

更新:2007 年 11 月

在本课中,您将学习如何为程序创建基本的错误处理代码。

即使设计得最好的程序有时也会出错。一些错误是代码中的缺陷,可以找出并更正。另一些错误则是程序的自然结果,例如,程序可能会试图打开一个使用中的文件。在这类情况中,错误是可以预见的,但却无法避免。作为一个程序员,必须能够预见这些错误并协助程序来处理这些错误。

运行时错误

程序运行中发生的错误称为“运行时错误”。当程序试图执行一些超出其设计意图的操作时,便会发生运行时错误。例如,如果程序试图执行无效操作,例如,将一个非数值字符串转换为数值,就会发生运行时错误。

出现运行时错误时,程序会发出异常,以便通过在程序内查找用于处理错误的代码来处理错误。如果未找到这样的代码,程序将停止并需要重新启动。由于上述情况可能导致数据丢失,最好在可能预见错误发生的任何地方均创建错误处理代码。

Try...Catch...Finally 块

在代码中可以使用 Try...Catch...Finally 块来处理运行时错误。您可以 Try 一段代码,如果这段代码发出异常,它将跳转到 Catch 块,然后执行 Catch 块中的代码。以上代码执行完后,执行 Finally 块中的所有代码。整个 Try...Catch...Finally 块由 End Try 语句结束。下面的示例阐释了如何使用每一个块。

Try
  ' Code here attempts to do something.
Catch
  ' If an error occurs, code here will run.
Finally
  ' Code in this block will always run.
End Try

首先,执行 Try 块中的代码。如果运行中没有发生任何错误,程序将跳过 Catch 块并执行 Finally 块中的代码。如果 Try 块中出现了错误,执行控制会立即跳转到 Catch 块,运行其中的代码,然后再运行 Finally 块中的代码。

试一试!

使用 Try...Catch 块

  1. 在“文件”菜单上,选择“新建项目”。

  2. 在“新建项目”对话框的“模板”窗格中,单击“Windows 应用程序”。

  3. 在“名称”框中键入 TryCatch,然后单击“确定”。

    一个新的 Windows 窗体项目随即打开。

  4. 将一个“文本框”控件和一个“按钮”控件从“工具箱”中拖动到窗体上。

  5. 双击该“Button”控件以打开代码编辑器。

  6. 在 Button1_Click 事件处理程序中,键入以下代码。

    Try
      Dim aNumber As Double = CDbl(Textbox1.Text)
      MsgBox("You entered the number " & aNumber)
    Catch
      MsgBox("Please enter a number.")
    Finally
      MsgBox("Why not try it again?")
    End Try
    
  7. 按 F5 运行程序。

  8. 在文本框中,键入一个数值,然后单击按钮。键入的数值出现在一个消息框中,紧接着出现一个邀请,请您再试一次。

  9. 接下来,在文本框中键入一个非数值,如一个单词,然后单击按钮。这一次,当程序试图将文本框中的文本转换为一个数字时,将无法执行并会发生错误。这时将会执行 Catch 块而不是继续执行完 Try 块中的代码,而且一个消息框会提示您键入一个数字。然后执行 Finally 块并邀请您再试一次。

后续步骤

在本课中,您学习了如何使用 Try...Catch...Finally 块创建一个基本的错误处理结构。截止到本课,关于 Visual Basic 语言的介绍就结束了。在后续课程中,您将学习如何为程序创建用户界面。

下一课:创建程序的可视外观:Windows 窗体介绍

请参见

任务

使程序在两种可能性之间选择:If...Then 语句

了解您的 Bug:三种编程错误

参考

Try...Catch...Finally 语句 (Visual Basic)

其他资源

Visual Basic 中的结构化异常处理