深谈VB.NET结构化异常处理执行标准

开发 后端
VB.NET结构化异常处理是VB.NET编程语言的一项特殊功能。我们可以通过这篇文章介绍的内容对这一机制进行一个详尽的了解。

对于VB.NET语言来说,在实际编程中有一个非常重要的操作值得我们去注意,那就关于异常方面的处理。今天我们就可以通过VB.NET结构化异常处理的相关介绍,来仔细的分析一下异常方面的作用及应用方法。#t#

概述

相较于VB语言来说,VB.NET引入了许多特色。其中最值得注意的变化就是引入了VB.NET结构化异常处理。虽然VB.NET仍然支持On Error Goto类型的异常处理,但是这样做并不是很好。我们应该充分利用VB.NET提供的结构化异常处理。

本文将结合VB.NET结构化异常处理的基础内容,并看一些在我们的应用程序中使用异常处理的例子。

合适的错误处理很重要

任何应用程序都需要一个恰当的异常处理。但是,由于严格的开发时间限制,责任共同承担,和相冲突的优先级,开发人员常常忽视了组织有序、考虑周到的异常处理的重要性。这常常导致用户的不便和失败,***不得不增加大量的代码重写工作。

结构化异常处理

VB.NET采用了.NET框架结构的错误报告的标准机制,也就是所谓的结构化异常处理;它根据异常来报告医用程序中出现的错误。异常也就是一些能够捕捉到错误信息的类。为了恰当的使用.NET的异常处理机制,开发人员需要编写巧妙的代码来密切观察异常,同时也要编写执行代码来处理这些异常。

VB.NET结构化异常处理在代码中提供如下部分:

Try 段:可以产生一个异常,并且总是能够被执行到的代码段

Catch段:试图对一个异常做出处理,当异常发生时就会被执行的代码段

Finally段:进行一些清理工作,并且总能被执行到的代码段

异常类

.NET中的每一个异常类都是由System.Exception类派生的。异常类中使用最频繁的成员如下:

消息:描述一个错误的具体信息

源:引起这个异常的对象或应用程序名

目标:处理异常的方法

Try...Catch区块

Try...Catch区块的目的是允许捕捉错误并为其指定一个具体的VB.NET结构化异常处理解决方法。代码看起来就像下面这样:

  1. Try   
  2. '被执行的代码   
  3. Catch   
  4. '错误解决代码   
  5. Catch 结束  

用Try段来写那些要被执行到的代码,而用Catch段来捕捉当执行Try段代码时可能产生的错误,并做出相应的反应。在Try段中出现的保护代码总会被执行到;但是,Catch段的代码只有当错误发生时才会被执行。代码的Try段总会被执行。

Try...Catch...Finally区块

使用Try...Catch...Finally区块的目的是允许执行Try段中被保护的代码,对Catch区块中可能的任何错误做出反应,并且在随后的Finally区块中还有清理代码。无论Try代码区块是否有错误发生,Finally区块中的代码都会被执行到。这样可以很方便的保证分配的资源会被释放,并且可以方便地提供那些不论错误控制细节如何,都要需要被执行的各种功能的函数。代码例子如下:

  1. Try   
  2. '执行代码   
  3. Catch   
  4. '错误解决代码   
  5. Finally   
  6. '清理代码   
  7. Catch 结束  

 

捕捉所有的异常和异常的具体类

VB.NET结构化异常处理是很灵活的,它允许捕捉一个具体类型的异常或者是任何类型的异常,这完全取决于我们怎么去使用它。

例子:捕捉任何可能发生的异常

  1. Try   
  2. Dim i As Integer = 0   
  3. Dim iresult As Integer   
  4. iresult = 1 / i  

 

把 ex 作为异常捕获

  1. MessageBox.Show
    (ex.ToString())   
  2. Finally   
  3. MessageBox.Show
    ("finally区块被执行")   
  4. Try结束  

 

这是怎么运行的

在上面的VB.NET结构化异常处理代码例子中,我们故意设立了一个运行错误,以此来证明可以捕捉到任何的异常。我们捕捉到发生的任何错误,对它做出反应,而不管错误的类型是什么。错误发生在Try代码块中,所以当异常产生时就接着执行Catch代码块,然后是Finally代码块。我们通过声明一个异常类型的变量ex来捕捉这个异常。

例子:捕捉一个特定类型的异常

  1. Try   
  2. Dim i As Integer = 0   
  3. Dim iresult As Integer   
  4. iresult = 1 / i  

 

把 ex 作为溢出类型的异常捕获

  1. MessageBox.Show
    (ex.ToString())   
  2. Finally   
  3. MessageBox.Show
    ("finally区块被执行")   
  4. Try结束  

 

这是怎么运行的

第二个代码例子引起了同样的错误,因为它试图执行一个以0为除数的除法,这样会引起溢出。但是,在这个例子中,我们仅仅有兴趣捕捉这种类型的异常,所以把ex变量的类型具体定义为OverflowException类型。运行第二个例子的代码结果和运行***个例子一样,因为在两个例子中都捕捉到同样的错误;但是,第二个例子不能捕捉到其它类型的异常(非溢出类型的异常)。但是像以前一样,不论是否捕捉到异常,Finally区块中的代码都会被执行到。

结论

VB.NET结构化异常处理提供了很好的灵活性,应该合理地加以利用。一般来说,在我们开发应用程序时,错误控制不应该是***才考虑的问题。反而,我们更应该注意建立好框架,在这个框架下建立每一个功能,这样才能向用户提供稳定可靠的应用程序。在我们的应用程序中应该小心地运用异常控制。

责任编辑:曹凯 来源: IT168
相关推荐

2010-01-15 18:01:05

VB.NET结构化异常

2010-01-12 15:04:01

VB.NET异常处理

2010-01-14 15:15:22

VB.NET数据行处理

2010-01-22 10:41:33

VB.NET声明结构

2009-10-28 14:34:44

VB.NET Tree

2010-01-18 15:01:02

VB.NET异常迭代捕

2009-10-14 16:46:25

VB.NET OnSt

2010-01-19 17:03:25

VB.NET可执行语句

2010-01-21 17:58:40

VB.NET List

2009-10-27 11:39:03

VB.NET事件处理程

2010-01-18 16:58:29

VB.NET Over

2009-10-29 14:02:24

VB和VB.NET比较

2009-10-20 14:21:55

VB.NET fnSi

2009-10-14 12:51:41

VB.NET Data

2010-01-21 18:08:25

VB.NET程序结构

2009-10-23 09:38:59

VB.NET平台调用

2009-11-03 17:31:01

VB.NET窗体

2009-10-27 15:02:07

VB.NET文件处理

2009-06-24 15:45:32

VB.NET

2011-06-17 11:05:22

VB.NET
点赞
收藏

51CTO技术栈公众号