正 文

正确处理.NET里的错误


www.7dspace.com  更新日期:2005-12-2 3:12:58  七度空间


处理具体的错误

上面例子的类属特性说明了如何处理错误,但是没有提供关于其发生的有用信息。所有的错误都来自System命名空间的Exception类,这个类能够被用来显示和错误相关的具体信息。前面的catch块能够被记录下来,以显示和特定错误相关的具体信息,就像下面这样:

Catch ex As System.Exception
Console.WriteLine("An error has occurred: " + ex.Message())
Console.WriteLine("At: " + ex.Source())
Console.WriteLine(ex.Stacktrace())

这个异常类有很多方法,但是我们用到了下面几个:

    * Message:描述当前异常的消息
    * Source:发生当前异常的方法/应用程序
    * Stacktrace:和当前异常相关的堆栈追踪

这些方法能够让你轻易地取得和显示同错误相关的信息。你可能不想向用户显示这些信息,所以它可以被很轻易地取得,并保存在日志、数据库,或者合适的地方。

Exception类是基本的.NET错误类。会存在一些具体的异常类,但是它们并不都来自Exception类。例如,示例代码可以经修改来处理具体的SQL错误。SqlClient类包括了SqlException对象以处理专门针对它的错误。可以加入另一个Catch块来处理针对SQL的错误:

Catch ex As System.Data.SqlClient.SqlException
Console.WriteLine("A SQL error occurred: " + ex.Message())
Console.WriteLine("At: " + ex.Source())

你自己来制造异常

你的代码可以在.NET异常发生的时候捕捉任何异常,但是你也可以自己来引发异常。这要用throw陈述式来实现。

Throw陈述式允许在必要的时候引发异常。它的句法如下:

VB.NET

Throw New Exception_Class()

C#

throw new Exception_Class();

你可能需要在代码执行过程中触发一个异常,从而让某个特定的错误发生,而throw陈述式就能让这成为可能。当从数据库里没有读到数据的时候,throw陈述式能够被用在示例代码里来中止执行。它能够和if陈述式组合起来,检查SqlDataReader对象的状态:

If (dr Is Nothing) Then
Throw New System.Exception()
End If

把这段代码放在第一个代码列表里,(如果在执行期间)没有数据被读取就会触发一个错误,而代码执行就被传给相应的catch块。Throw陈述式可以和自定义的异常(来自Exception类)组合起来,以创建更加强健的错误处理(机制)。

小心处理

错误的发生不会在乎开发人员的技术水平。.NET框架通过结构化的异常处理,简化了对不可预见问题的处理过程。这就让错误能够被顺利的处理。此外,错误也能够在代码里触发以模拟其他问题发生时的异常。

Tony Patton的职业生涯开始于应用程序开发员,并已经获得了Java、VB、Lotus和XML的认证,以增加其专业知识。

2页,页码:[1] [2] 

上一篇:使用类厂方法来实例化对象
下一篇:给你的ASP.NET应用程序加入日历的功能
作者:Tony Patton  来源:开发者在线 ( 责任编辑:7dspace )
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐