Demonstrates rethrowing an exception from a method

image_pdfimage_print

   

/*
C# Programming Tips & Techniques
by Charles Wright, Kris Jamsa

Publisher: Osborne/McGraw-Hill (December 28, 2001)
ISBN: 0072193794
*/

//  Rethrow.cs -- Demonstrates rethrowing an exception from a method.
//
//                Compile this program with the following command line:
//                    C:>csc Rethrow.cs
//
namespace nsRethrow
{
    using System;
    using System.IO;
    
    public class Rethrow
    {
        static public void Main ()
        {
            while (true)
            {
                Console.Write ("Please enter a file name (return to exit): ");
                string FileName = Console.ReadLine ();
                if (FileName.Length == 0)
                    break;
                try
                {
                    ReadFile (FileName);
                    break;
                }
                catch (IOException e)
                {
                    if (e is FileNotFoundException)
                        Console.WriteLine ("The file " + FileName + " was not found");
                }
                catch (Exception e)
                {
                    Console.WriteLine (e.Message + "
");
                    break;
                }
            }
        }
        static public void ReadFile (string FileName)
        {
            FileStream strm;
            StreamReader reader;
            try
            {
                strm = new FileStream (FileName, FileMode.Open);
                reader = new StreamReader (strm);
                string str = reader.ReadToEnd ();
                Console.WriteLine (str);
            }
            catch (IOException e)
            {
                // If file not found, go back and get another name
                if (e is FileNotFoundException)
                    throw (e);
                // Code here to handle other IOException classes
                Console.WriteLine (e.Message);
                throw (new IOException());
            }
        }
    }
}