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

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

 2009-02-19 08:17:32 来源:WEB开发网   
核心提示:异常是一种的报告错误的机制,它可以在远离错误发生的地方进行处理错误,Effective C# 原则44:创建应用程序特定的异常类,所有关于错误发生的的信息必须包含在异常对象中,在错误发生的过程中,但样是不可能从用户那里赢得声望的,或者,你可能想把底层的错误转化成详细的应用程序错误,而且不丢失关于错误的任何信息

异常是一种的报告错误的机制,它可以在远离错误发生的地方进行处理错误。所有关于错误发生的的信息必须包含在异常对象中。在错误发生的过程中,你可能想把底层的错误转化成详细的应用程序错误,而且不丢失关于错误的任何信息。你须要仔细考虑关于如何在C#应用程序中创建特殊的异常类。第一步就是要理解什么时候以及为什么要创建新的异常类,以及如何构造继承的异常信息。当开发者使用你的库来写catch语句时,他们是基于特殊的进行时异常在区别为同的行为的。每一个不同的异常类可以有不同的处理要完成:

try {
 Foo( );
 Bar( );
} catch( MyFirstApplicationException e1 )
{
 FixProblem( e1 );
} catch( AnotherApplicationException e2 )
{
 ReportErrorAndContinue( e2 );
} catch( YetAnotherApplicationException e3 )
{
 ReportErrorAndShutdown( e3 );
} catch( Exception e )
{
 ReportGenericError( e );
}
finally
{
 CleanupResources( );
}

不同的catch语句可以因为不同的运行时异常而存在。你,做为库的作者,当异常的catch语句要处理不同的事情时,必须创建或者使用不同的异常类。如果不这样,你的用户就只有唯一一个无聊的选择。在任何一个异常抛出时,你可以挂起或者中止应用程序。这当然是最少的工作,但样是不可能从用户那里赢得声望的。或者,他们 可以取得异常,然后试着断定这个错误是否可以修正:

try {
 Foo( );
 Bar( );
} catch( Exception e )
{
 switch( e.TargetSite.Name )
 {
  case "Foo":
   FixProblem( e );
   break;
  case "Bar":
   ReportErrorAndContinue( e );
   break;
  // some routine called by Foo or Bar:
  default:
   ReportErrorAndShutdown( e );
   break;
 }
} finally
{
 CleanupResources( );
}

1 2 3 4  下一页

Tags:Effective 原则 创建

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