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( ) );
            }
        }
    }

运行结果为:



posted @ 2009-08-17 18:54  爱生活,爱GIS  阅读(1173)  评论(0编辑  收藏  举报