结构化异常处理 与 非结构化异常处理 的区别
简单来说, 结构化异常处理是指使用包含异常的控制结构、隔离的代码块和筛选器来创建异常处理机制。 这样,您的代码可以区分不同类型的错误,并根据环境做出相应的响应。
在非结构化异常处理中,位于代码开头的 On Error 语句处理所有异常。
----------------------------------------------------------------------------------------------------------------------------------------------
Visual Basic 支持结构化异常处理,您可以使用该处理创建和维护具有可靠、全面的错误处理程序的程序。 结构化异常处理是旨在通过将控制结构(类似于 Select Case 或 While)与异常、受保护的代码块和筛选器结合起来,在执行期间检测和响应错误的代码。
- - - - - - - -- - - - - - - - - - -- - - - - - -- - - - - -- - - - -- - - - - -- - - - -- - - - -- - - -- - - - -- - - -- - - - -- - - -- - - -- - - -- - - -
在“非结构化异常处理”中,您将 On Error 语句放在代码块的开始处,它将处理在该块内发生的任何错误。 如果在执行 On Error 语句后过程中引发了异常, 程序分支到 On Error 语句中指定的行参数。 行参数(行号或行标签)指示异常处理程序的位置。
-------------------------------------------------------------------------------------------------------------------------------------------------
与非结构化异常处理相比,结构化异常处理的适用面更广、更可靠,并且更灵活。应尽可能地使用结构化异常处理。 但在下列情况下,应使用非结构化异常处理: 升级用 Visual Basic 的早期版本编写的应用程序。 开发应用程序的最初版本或草稿,并且不介意程序是否无法正常关闭。 您事先已经知道导致异常的原因。 时间紧迫,您需要走捷径,也愿意以牺牲灵活性为代价来争取速度。 代码不太重要或非常短,只需对产生异常的代码分支进行测试。 需要使用 Resume Next 语句(结构化异常处理不支持该语句)。 在同一函数内,不能混用结构化和非结构化异常处理。 如果使用 On Error 语句,则在同一函数中不能使用 Try...Catch 语句。
用户将输入一个数字,而不是字符。 该数字有特定的格式。 用户不会输入空字符串。 用户只有一个电话号码。 用户的输入可能会违反这些假设中的任何一个或全部。 可靠的代码需要足够的异常处理机制,使应用程序在用户的输入违反这些假设时能够正常恢复。
除非可以确保方法在任何情况下都不会引发异常,否则应考虑使用说明性异常处理。 异常处理应该是有意义的。 除了指出有错误发生外,异常处理产生的信息还应说明发生错误的原因和位置。 如果提供的信息不具有说明性,而仅仅指出“发生错误”,只会使用户感到更迷惑。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |