C#.NET中的定制异常(Exception)

参照MSDN的异常定制
/*
 * Created by SharpDevelop.
 * User: noo
 * Date: 2009-8-17
 * Time: 18:18
 * 
 * 定制异常
 
*/

using  System;

    
class  NotEvenException : Exception // 定制的异常要继承自System.Exception类
    {
        
const   string  str1  =   " 函数所需的参数是偶数。 " ;

        
public  NotEvenException() :
            
base ( str1 ) // 不带参数的构造函数,继承自基类的构造函数
        { }

        
public  NotEvenException(  string  str2 ) :
            
base ( String.Format(  " {0} - {1} " ,str2, str1 ) ) // 带参数的构造函数,继承自基类的构造函数
        { }
    }

    
class  NewSExceptionDemo 
    {
        
public   static   void  Main() 
        {
            Console.WriteLine (
" \n现在,一个异常通过基类的构造函数被抛出\n " );
            CalcHalf( 
18  );
            CalcHalf( 
21  );

            Console.WriteLine (
" \n现在,一个异常通过派生类的构造函数被抛出\n " );
            CalcHalf2( 
30  );
            CalcHalf2( 
33  );
        }
        
        
// 如果input参数不是偶数,Half函数就跑出一个基类异常
         static   int  Half(  int  input )
        {
            
if ( input  %   2   !=   0  )
                
throw   new  Exception( String.Format( " 参数 {0} 不能被2整除。 " , input ) );

            
else   return  input  /   2 ;
        }

        
// 如果input参数不是偶数,Half2函数就跑出一个派生类异常
         static   int  Half2(  int  input )
        {
            
if ( input  %   2   !=   0  )
                
throw   new  NotEvenException( 
                    String.Format( 
" 无效参数:{0} " , input ) );

            
else   return  input  /   2 ;
        }

        
//  CalcHalf方法调用Half方法,并捕捉任何抛出的异常
         static   void  CalcHalf( int  input )
        {
            
try
            {
                
int  halfInput  =  Half( input );
                Console.WriteLine( 
                    
" {0}的一半为{1}. " , input, halfInput );
            }
            
catch ( Exception ex )
            {
                Console.WriteLine( ex.ToString( ) );
            }
        }

        
//  CalcHalf2方法调用Half2方法,并捕捉任何抛出的异常
         static   void  CalcHalf2( int  input )
        {
            
try
            {
                
int  halfInput  =  Half2( input );
                Console.WriteLine( 
                    
" {0}的一半是{1}. " , input, halfInput );
            }
            
catch ( Exception ex )
            {
                Console.WriteLine( ex.ToString( ) );
            }
        }
    }

运行结果为:
C#.NET中的定制异常(Exception)


你可能感兴趣的:(exception)