正确处理.NET里的错误

ZDNet软件频道 时间:2003-11-17 作者:ZDNet China |  我要评论()
本文关键词:
错误是应用程序开发过程里不可避免的事情,关键在于如何正确地处理可能发生的任何问题.微软 .NET框架里采取了一种结构化的方法。下面就让我们仔细地看一下这种方法是如何处理错误的。
本文译自Builder.com,未经许可请勿转载

错误是应用程序开发过程里不可避免的事情,而正确地处理可能发生的任何问题就是开发人员的责任了。

错误在Visual Basic里是以类属的方式来处理的,但是微软在.NET框架里采取了一种结构化的方法。这种方法也不会在乎所使用的语言。现在让我们更加仔细地看一下。

结构化的异常处理

异常和错误在.NET框架里是同义词。.NET环境从设计上有所变化,所以应用程序能够捕捉错误并有效地处理它们,而不是用系统挂机或者用难以理解的错误信息来让用户吃惊。下面的结构被用来安全地处理错误:

.NET的错误处理结构分三个部分:
  • Try(尝试):Try块是代码的主要部分。它是该结构其他部分的基础。
  • Catch(捕捉):只有当错误发生在try块里的时候,这一块里的代码才会被执行。Catch块可以处理所有的或者只处理特定的错误。此外,多个catch块也能够被用来处理多个异常类型。
  • Finally(最后):这一块里的代码每次都会执行而不管是什么错误。

从本质上讲,这个结构会说:尝试(运行)这段代码,捕捉这一部分里的任何错误,最后,总是执行这段代码。

C#和VB.NET的句法是类似的,但是举例会给你更好的介绍。下面的VB.NET代码示例会打开一个数据库连接。错误被处理,而数据库的连接总是关闭的。

Dim conn As SqlConnection()
Dim comm As SqlCommand
Dim dr As SqlDataReader
Try
conn = New SqlConnection()
comm.= New SqlCommand()
conn.ConnectionString = "database=test"
comm.CommandText = "SELECT * FROM Authors"
comm.Connection = conn
conn.Open()
dr = comm.ExecuteReader()
If (dr Is Nothing) Then
Throw New System.Exception()
End If
While (dr.Read())
' do something
Wend
Catch
Console.WriteLine("Error occurred.")
Finally
If Not (conn Is Nothing) Then
If (conn.State = ConnectionState.Open) Then
conn.Close()
End If
conn.Dispose()
End If
If Not (comm Is Nothing) Then
comm.Dispose()
End If
If Not (dr Is Nothing) Then
If Not (dr.IsClosed) Then
dr.Close()
End If
dr.Dispose()
End If
End Try

要注意,try块最后的End Try这一行。代码尝试打开到SQL服务器数据库的连接,并通过这个连接读取数据。发生的任何错误都在捕捉块里被处理,并显示一个简要的消息。数据库对象在finally块里被清除。SqlConnection和SqlDataReader对象被关闭(如果原来打开了的话),所有的对象资源都被返回给系统(通过dispose方法)。


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134