Exception实例
///<summary>
/// Exception Sample
///</summary>
namespace ExceptionSample
{
    using System;
    class EntryPoint
    {
        static void Main()
        {
            string userInput;
            while (true)
            {
                try
                {
                    Console.WriteLine("Input a number between 1 and 5 and press enter to exit");
                    userInput = Console.ReadLine();
                    userInput = userInput.ToString().Trim();
                    if (userInput == "")
                        break; ///exit while loop
                    int index = Convert.ToInt32(userInput);//maybe throw FormatException
                    if (index < 0 || index > 5)
                        throw new System.IndexOutOfRangeException("you typed in" + userInput);///Throw IndexOutOfRangeException to cacth
                    Console.WriteLine("your number is  " + index);
                }
                catch (System.FormatException e)
                {
                    Console.WriteLine("FormatException:Number should be between 1  and  5" + e.Message);
                }
                catch (System.IndexOutOfRangeException e)
                {
                    Console.WriteLine("IndexOutOfRangeException:Number should be between 1  and  5" + e.Message);
                }
                catch (System.Exception e)
                {
                    Console.WriteLine("some other exception occured"+e.Message);
                }
                finally
                {
                    Console.WriteLine("thank you ");
                }
            }
        }
    }
}实例二
///<summary>
/// Exception Sample
///</summary>
namespace ZYG.CSharp.Exception
{ 
    using System;
    using System.IO;
    ///<summary>
    /// defined exception class
    ///</summary>
    class LandLineSpyFoundException : System.ApplicationException
    {
        public LandLineSpyFoundException(string spyName)
            : base("LandLine spy found,with name=" + spyName)
        { 
            
        }
        public LandLineSpyFoundException(string spyName, Exception innerException)
            : base("LandLine spy found,with name=" + spyName, innerException)
        { 
            
        }
    }
    /////////////////////////////////////////////////
    class ColdCallFileFormatException : System.ApplicationException
    {
        public ColdCallFileFormatException(string message)
            : base(message)
        {
        }
        public ColdCallFileFormatException(string message, Exception innerException)
            : base( message,innerException)
        {
        }
    }
    ////////////////////////////////////
    class UnexpectedException : System.ApplicationException
    {
        public UnexpectedException(string message)
            : base(message)
        {
        }
        public UnexpectedException(string message, Exception innerException)
            : base(message, innerException)
        {
        }
    }
    ///<summary>
    /// file reader class
    ///</summary>
    class ColdCallFileReader : System.IDisposable
    {
        FileStream fs;
        StreamReader sr;
        uint nPeopleToRing;
        bool isDisposed = false;
        bool isOpen = false;
     
        public void Open(string filename)
        {
            if (isDisposed)
                throw new System.ObjectDisposedException("peopleToRing");//-------------------Exception Point
            fs = new System.IO.FileStream(filename, FileMode.Open);        //FileNotFoundException Point
            sr=new System.IO.StreamReader(fs);
            try
            {
                string firstLine = sr.ReadLine(); //人员个数
                nPeopleToRing = uint.Parse(firstLine);             ///Exception Point FomatException
                isOpen=true;
            }
            catch( System.FormatException e)
            {
                throw new ColdCallFileFormatException("firstLine isn\'t an integer", e);
            }
            finally
            {}
           
        }
        public void ProcessNextPerson()
        {
            if (isDisposed)
                throw new System.ObjectDisposedException("peopleToRing");//-------------------Exception Point
            if (!isOpen)
                throw new UnexpectedException("Attempt to access cold call first is not open");
            try
            {
                string name;
                name = sr.ReadLine();
                if (name == null)
                    throw new ColdCallFileFormatException("Not enough names");
                if (name[0] == 'Z')
                    throw new LandLineSpyFoundException(name);
                Console.WriteLine(name);
            }
            catch (LandLineSpyFoundException e)
            {
                Console.WriteLine(e.Message);
            }
            finally
            { }
        }
        public uint NPeopleToRing
        {
            get {
                if (isDisposed)
                    throw new System.ObjectDisposedException("peopleToRing");//-------------------Exception Point
                if (!isOpen)
                    throw new UnexpectedException("Attempt to access cold call first is not open");
                return nPeopleToRing;
            }
        }
        public void Dispose()
        {
            if (isDisposed)
                return;
            isDisposed = true;
            isOpen = false;
            if (fs != null)
            {
                fs.Close();
                fs = null;
            }
        }
    }

    class EntryPoint
    {
        static void Main()
        {
            string filename;
            Console.WriteLine("Please type in the name of the file containing the names of the people to be cold-Called");
            filename = Console.ReadLine();
            ColdCallFileReader peopleToRing = new ColdCallFileReader();
            try
            {
                peopleToRing.Open(filename);
                for (int i = 0; i < peopleToRing.NPeopleToRing; i++)
                {
                    peopleToRing.ProcessNextPerson();
                }
                Console.WriteLine("All callers processed correctly");
            }
            catch (System.IO.FileNotFoundException e)
            {
                Console.WriteLine("The file{0} does not exist", filename);
            }
            catch (ColdCallFileFormatException e)
            {
                Console.WriteLine("The file {0} appears have been corrupted", filename);
            }
            catch (System.Exception e)
            {
                Console.WriteLine("Exception occured :\n"+e.Message);
            }
            finally
            {
                peopleToRing.Dispose();
            }
            Console.ReadLine();
        }
    }
}
                    
                


    
                
            
        
浙公网安备 33010602011771号