Visual Basic .NET 中的异常处理简介(3)
2008-04-09 04:43:13来源:互联网 阅读 ()
非结构化异常处理
非结构化异常处理通过 Err 对象和以下三种语句来实现:On Error、Resume 和 Error。On Error 语句创建单个异常处理程序以捕捉发生的所有异常,您可以在以后改变处理程序的位置,但一次只能有一个处理程序。此方法可以跟踪最近产生的异常和最近的异常处理程序的位置。在方法开始时,异常和异常处理程序的位置都设置为 Nothing。
要在代码中生成运行时错误,请使用 Raise 方法。每次在错误处理例程中发生 Exit Sub、Exit Function、Exit Property、Resume 或 Resume Next 语句时,Err 对象的属性都将重置为零或零长度字符串。在错误处理例程外部使用上述任何语句都不会重置其属性。如果确实需要重置属性,可以使用 Clear 方法重置 Err 对象。
Error 对象Err 对象属性的值由刚刚发生的错误决定。下表列出了该对象的属性及其简单说明。
下面的示例显示了如何在非结构化错误处理中使用上述某些属性:
On Error Resume
NextErr.ClearErr.Raise(33333)Err.Description
=
"您没有输入数字!"MsgBox(
Err.Number)MsgBox(
Err.Description)Msg = "请按 F1 或“帮助”查看 " &
Err.HelpFile & "
中有关以下帮助内容的" & _"主题:" &
Err.HelpContextMsgBox(Msg)
On Error GoTo 语句
On Error GoTo 语句启用异常处理的某个例程,并指定该例程在此过程中的位置。它使用标签或行号,指出特定异常处理例程在代码中的位置。使用 -1 时,在过程内部禁用错误处理。使用 0 时,禁用当前异常。如果没有 On Error 语句,并且在当前调用堆栈中所有方法均未处理异常,则发生任何运行时错误都将是致命的:执行过程停止并显示错误消息。
下表列出了 On Error GoTo 语句可能使用的方法。
Resume 和 Resume Next
Resume 语句本身可以将控制权返回导致异常的语句。执行过程将返回到最初产生异常的那一行。
相比较而言,Resume Next 语句将在发生异常后恢复执行过程。该语句指定,在异常事件中,控制权将传递给紧接发生异常语句之后的语句。Resume Next 的使用可允许出现不太严重的失败。引发错误的语句失败,但应用程序将继续执行,且允许用户改正错误并继续进行操作。与此类似,Resume <标签> 将控制权传递给在其 line 参数中指定的标签。确保行标签与调用它的代码位于相同的过程中,因为它不能跨函数使用。
Resume 在错误处理例程中必须单独使用。它在这种例程的外部引发错误。
Error 语句Visual Basic .NET 支持 Error 语句仅仅是为了保持向后兼容。在新代码中,使用 Err 对象的 Raise 方法生成运行时错误。
非结构化异常处理示例 以下示例是非结构化错误处理的一种基本方法。当 FlawlessCode 遇到错误时,执行过程将转移到
Whoops,它为用户提供该错误的有关信息(主要包含在 Err 对象的
Description 属性中的信息):
On Error
Goto Whoops' 代码要做很多事情,不要过多
' 地研究错误处理代码。
Return
Whoops:
' 为用户提供错误信息。
MsgBox ("意外错误:" & Err.Description)
Return
End Sub
以下示例显示了如何使用 Err 对象构造错误消息对话框。
Dim ErrorMessage as String' 如果发生错误则构造错误消息。
On Error
Resume NextErr.Raise (13) '
生成“类型不匹配”错误。' 查看是否出现错误。如果是,则显示消息。
If
Err.Number
<> 0 ThenErrorMessage = "错误 #" & Str(
Err.Number) & " 原因是" _&
Err.Source & vbCrLf &
Err.Description' 将该消息显示为关键消息。
MsgBox(ErrorMessage, MsgBoxStyle.Critical, "错误")
End If
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:VB.NET注册表编程
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash
