相对于VB而言,VB.NET中引入了许多特色。其中最吸引我的就是引入了结构化异常处理。虽然VB.NET仍然支持On@H_301_17@Error Goto类型的异常处理,但是这样做并不是很好。相比而言,结构化异常处理更加灵活,使用更加方便。我们应该充分利用@H_301_17@VB.NET提供的结构化异常处理。
在VB.NET结构中的异常处理分为3个语句块。
(2)catch进行错误的处理
(3)finally负责错误处理后的后续工作如:释放对象、清理资源等的工作。
使用这些区块的目的是允许执行Try模块中被保护的代码,对catch,对catch区块中可能分任何错误做出反应,并且在随后的Finally块中还有清理代码。无论Try代码块是否有错误发生,Finally块的代码都会被执行到,这样可以很方便的保证分配的资源会被释放,并且可以方便地提供那些不论错误控制细节如何,都需要被执行的各种功能的函数。但是,Catch语句块不一定运行,如果Try块内的代码没有错误,没有抛出异常的话,Catch语句块中的代码是不运行的,而是跳过Catch块直接运行Finally块中的清理工作。反之如果遇到了异常Catch语句块中的处理工作就要进行。
下面举个实例:
Private Sub Button1_Click(sender As Object,e As EventArgs) Handles Button1.Click Dim file As System.IO.FileStream,msg As String Try file = New System.IO.FileStream("D:\readme.txt",System.IO.FileMode.Open,System.IO.FileAccess.Read) file.Close() Catch ex As Exception msg = String.Format("{0}ralsed exception :{1}",ex.Source,ex.Message) MessageBox.Show(msg,"My App",MessageBoxButtons.OK,MessageBoxIcon.Error) Finally If Not file Is Nothing Then file.Close() End Try End Sub这个例子是在 D盘找到一个readm@H_301_17@e.txt文档,如果我们在@H_301_17@D盘中没有建立这个文档,那么就会执行@H_301_17@Catch语句,会弹出出错的来源和原因:
如果我们在D盘建立一个readm@H_301_17@e.txt文档,那么就不会有错误发生,那么不会执行Catch语句,跳到Finally中执行。
在现在,开发人员常常忽视了组织有序,考虑周到的异常处理的重要性,常常导致用户的不便和失败。我们将来如果要做合格的开发人员,异常处理对我们来说是至关重要的。它是.NET平台重要的安全机制,将错误代码的接受和处理的进行了完美的分离,理清了编程者的思绪,也帮助代码增强了可读性,方便了维护者的阅读和理解,而且还提供了处理程序运行时出现的任何意外或异常情况的方法。
原文链接:https://www.f2er.com/vb/258048.html