WEB开发网
开发学院软件开发C语言 Effective C# 原则44:创建应用程序特定的异常类 阅读

Effective C# 原则44:创建应用程序特定的异常类

 2009-02-19 08:17:32 来源:WEB开发网   
核心提示: 当你创建异常时,你应该提供你自己的库信息,Effective C# 原则44:创建应用程序特定的异常类(4),抛出你自己详细的异常,以及包含源异常做为它的内部异常属性,你可以通过提供所有基类支持的构造函数,来创建全功能的异常类,你可以提供你所能提供的最多的额外信息:public doubl

当你创建异常时,你应该提供你自己的库信息。抛出你自己详细的异常,以及包含源异常做为它的内部异常属性。你可以提供你所能提供的最多的额外信息:

public double DoSomeWork( )
{
 try {
  // This might throw an exception defined
  // in the third party library:
  return ThirdPartyLibrary.ImportantRoutine( );
 } catch( Exception e )
  {
   string msg =
    string.Format("Problem with {0} using library",
     this.ToString( ));
   throw new DoingSomeWorkException( msg, e );
  }
 }
}

这个新的版本会在问题发生的地方创建更多的信息。当你已经创建了一个恰当的ToString()方法时(参见原则5),你就已经创建了一个可以完整描述问题发生的异常对象。更多的,一个内联异常显示了产生问题的根源:也就是你所使用的第三方库里的一些信息。

这一技术叫做异常转化,转化一个底的层异常到更高级的异常,这样可以提供更多的关于错误的内容。你越是创建多的关于错误的额外的信息,就越是容易让它用于诊断,以及可能修正错误。通过创建你自己的异常类,你可能转化底层的问题到详细的异常,该异常包含所详细的应用程序信息,这可以帮助你诊断程序以及尽可能的修正问题。

希望你的应用程序不是经常抛出异常,但它会发生。如果你不做任何详细的处理,你的应用程序可能会产生默认的.Net框架异常,而不管是什么错误在你调用的方法里发生。提供更详细的信息将会让你以及你的用户,在实际应用中诊断程序以及可能的修正错误大有帮助。当且仅当对于错误有不同的行为要处理时,你才应该创建不同的异常类。你可以通过提供所有基类支持的构造函数,来创建全功能的异常类。你还可以使用InnerException属性来承载底层错误条件的所有错误信息。

上一页  1 2 3 4 

Tags:Effective 原则 创建

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接