VB.NET中的结构化异常处理
Try...Catch...Finally区块
使用Try...Catch...Finally区块的目的是允许执行Try段中被保护的代码,对Catch区块中可能的任何错误做出反应,并且在随后的Finally区块中还有清理代码。无论Try代码区块是否有错误发生,Finally区块中的代码都会被执行到。这样可以很方便的保证分配的资源会被释放,并且可以方便地提供那些不论错误控制细节如何,都要需要被执行的各种功能的函数。代码例子如下:
Try
'执行代码
Catch
'错误解决代码
Finally
'清理代码
Catch 结束
捕捉所有的异常和异常的具体类
.NET的结构化异常处理是很灵活的,它允许捕捉一个具体类型的异常或者是任何类型的异常,这完全取决于我们怎么去使用它。
例子:捕捉任何可能发生的异常
Try
Dim i As Integer = 0
Dim iresult As Integer
iresult = 1 / i
把 ex 作为异常捕获
MessageBox.Show(ex.ToString())
Finally
MessageBox.Show("finally区块被执行")
Try结束
这是怎么运行的
在上面的代码例子中,我们故意设立了一个运行错误,以此来证明可以捕捉到任何的异常。我们捕捉到发生的任何错误,对它做出反应,而不管错误的类型是什么。错误发生在Try代码块中,所以当异常产生时就接着执行Catch代码块,然后是Finally代码块。我们通过声明一个异常类型的变量ex来捕捉这个异常。
例子:捕捉一个特定类型的异常
Try
Dim i As Integer = 0
Dim iresult As Integer
iresult = 1 / i
把 ex 作为溢出类型的异常捕获
MessageBox.Show(ex.ToString())
Finally
MessageBox.Show("finally区块被执行")
Try结束
这是怎么运行的
第二个代码例子引起了同样的错误,因为它试图执行一个以0为除数的除法,这样会引起溢出。但是,在这个例子中,我们仅仅有兴趣捕捉这种类型的异常,所以把ex变量的类型具体定义为OverflowException类型。运行第二个例子的代码结果和运行第一个例子一样,因为在两个例子中都捕捉到同样的错误;但是,第二个例子不能捕捉到其它类型的异常(非溢出类型的异常)。但是像以前一样,不论是否捕捉到异常,Finally区块中的代码都会被执行到。
结论
.NET的异常控制提供了很好的灵活性,应该合理地加以利用。一般来说,在我们开发应用程序时,错误控制不应该是最后才考虑的问题。反而,我们更应该注意建立好框架,在这个框架下建立每一个功能,这样才能向用户提供稳定可靠的应用程序。在我们的应用程序中应该小心地运用异常控制。
0
相关文章