如何:在发生错误时保持控制 (Visual Basic)
使用 Try...Catch...Finally 语句 (Visual Basic) 结构可以进行“结构化异常处理”。 这样,如果在运行代码时发生指定的异常,则可以执行特定语句块。 发生这种情况时,称代码“引发”异常,则使用适当的 Catch 语句“捕捉”该异常。
代码引起异常时运行一组语句
使用 Try...Catch...Finally 结构将可能引起异常的代码包含在内。 然后,指定发生异常时要运行的代码,并且选择提供一组在控制退出 Try...Catch...Finally 结构之前要运行的语句。
下面的示例尝试精确计算在 Object 变量 givenDate 中提供的值之后 100 年的日期和时间。
Dim givenDate As Object Dim nextCentury As Date Try nextCentury = Microsoft.VisualBasic.DateAdd("yyyy", 100, givenDate) Catch thisExcep As System.ArgumentOutOfRangeException ' The resulting date/time is later than December 31, 9999. Catch thisExcep As System.ArgumentException ' At least one argument has an invalid value. Catch thisExcep As System.InvalidCastException ' The value in givenDate cannot be interpreted as a date/time. Catch ' An unforeseen exception has occurred. Finally ' This block is always run before leaving the Try structure. End Try
前三个 Catch 块处理 DateAdd 函数引发的可预知异常。 最后一个 Catch 块中可以处理意外异常。
不管发生什么情况,Finally 块始终是离开 Try...Catch...Finally 结构之前最后要执行的代码。 如果在 Try 或 Catch 块中创建或打开了对象或数据库连接等资源,如果可以,则使用 Finally 块关闭或释放这些资源。
如果异常变量 thisExcep 未出现在 Dim 等声明语句中,则将具有 As 子句的 Catch 语句用作声明。
请参见
任务
如何:根据一个或多个条件运行语句 (Visual Basic)