Demonstrates using if statements to sort out an IOException

   

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

Publisher: Osborne/McGraw-Hill (December 28, 2001)
ISBN: 0072193794
*/
// IOExcept.cs -- Demonstrates using if statements to sort out an IOException
//
//                Compile this program with the following command line:
//                    C:>csc IOExcept.cs
//
namespace nsExcept
{
    using System;
    using System.IO;
    public class IOExcept
    {
        static public void Main (string [] args)
        {
            if (args.Length == 0)
            {
                Console.WriteLine ("Please enter a file name");
                return;
            }
            ReadFile (args[0]);
        }
        static public void ReadFile (string FileName)
        {
            FileStream strm = null;
            StreamReader reader = null;
            try
            {
                strm = new FileStream (FileName, FileMode.Open,
                                                   FileAccess.Read);
                reader = new StreamReader (strm);
                while (reader.Peek() > 0)
                {
                    string str = reader.ReadLine();
                    Console.WriteLine (str);
                }
            }
            catch (IOException e)
            {
                if (e is EndOfStreamException)
                {
                    Console.WriteLine ("Attempted to read beyond end of file");
                }
                else if (e is FileNotFoundException)
                {
                    Console.WriteLine ("The file name " + FileName +
                                       " cannot be found");
                    return;
                }
                else if (e is DirectoryNotFoundException)
                {
                    Console.WriteLine ("The path for name " + FileName +
                                       " cannot be found");
                    return;
                }
                else if (e is FileLoadException)
                {
                    Console.WriteLine ("Cannot read from " + FileName);
                }
                reader.Close();
                strm.Close ();
            }
            catch (Exception e)
            {
                Console.WriteLine (e.Message);
            }
        }
    }
}



           
          


Throw a format exception purposely to demonstrate catching a FormatException

   

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

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

//
// FormExce.cs -- This program will throw a format exception purposeely
//                to demonstrate catching a FormatException.
//
//                Compile this program with the following command line:
//                    C:>csc FormExcep.cs
//
namespace nsExceptions
{
    using System;
    public class FormExce
    {
        static public void Main ()
        {
            const double pi = 3.14159;
            try
            {
                Console.WriteLine ("pi = {0,0:f5", pi);
            }
            catch (FormatException e)
            {
                Console.WriteLine (e.Message);
            }
        }
    }
}


           
          


Catches an exception that was thrown in a component

   

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

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

// FileOpen.cs -- Catches an exception that was thrown in a component
//
//                Compile this program with the following command line:
//                    C:>csc /r:fopen.dll FileOpen.cs
//
namespace nsFileOpen
{
    using System;
    using System.IO;
    class clsMain
    {
        static public void Main ()
        {
            clsFile file;
            try
            {
                file = new clsFile ("");
            }
            catch (Exception e)
            {
                Console.WriteLine (e.Message);
                Console.WriteLine ("Exception handled in client");
            }
        }
    }
}


// Fopen.cs -- program to show exception handling in a component
//
//             Compile this program with the following command line:
//                 C:>csc /t:library Fopen.cs
//
namespace nsFileOpen
{
    using System;
    using System.IO;
    public class clsFile
    {
        FileStream strm;
        public clsFile (string FileName)
        {
            strm = new FileStream (FileName, FileMode.Open,
                                             FileAccess.Read);
        }
    }
}



           
          


Demonstrates stacking catch blocks to provide alternate code for more than one exception type

   

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

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

// Except.cs -- Demonstrates stacking catch blocks to provide alternate code for
// more than one exception type.
//
// Compile this program with the following command line:
//    C:>csc Except.cs
//
namespace nsExcept
{
    using System;
    using System.IO;
    
    public class Except
    {
        static public void Main (string [] args)
        {
            if (args.Length == 0)
            {
                Console.WriteLine ("Please enter a file name");
                return;
            }
            try
            {
                ReadFile (args[0]);
            }
            catch (ArgumentException)
            {
                Console.WriteLine ("The file name " + args [0] +
                          " is empty or contains an invalid character");
            }
            catch (FileNotFoundException)
            {
                Console.WriteLine ("The file name " + args [0] +
                                   " cannot be found");
            }
            catch (DirectoryNotFoundException)
            {
                Console.WriteLine ("The path for " + args [0] +
                                   " is invalid");
            }
            catch (Exception e)
            {
                Console.WriteLine (e);
            }
        }
        static public void ReadFile (string FileName)
        {
            FileStream strm = new FileStream (FileName, FileMode.Open,
                                                        FileAccess.Read);
            StreamReader reader = new StreamReader (strm);
            string str = reader.ReadToEnd ();
            Console.WriteLine (str);
        }
    }
}


           
          


Catch Divide By Zero Exception


   

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

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

namespace nsDivZero
{
    using System;
    public class DivZero
    {
        static public void Main ()
        {
            // Set an integer equal to 0
            int IntVal1 = 0;
            // and another not equal to zero
            int IntVal2 = 57;
            try
            {
                Console.WriteLine ("{0} / {1} = {2}", IntVal2, IntVal1, IntResult (IntVal2, IntVal1) / IntResult (IntVal2, IntVal1));
            }
            catch (DivideByZeroException e)
            {
                Console.WriteLine (e.Message);
            }
            // Set a double equal to 0
            double dVal1 = 0.0;
            double dVal2 = 57.3;
            try
            {
                Console.WriteLine ("{0} / {1} = {2}", dVal2, dVal1, DoubleResult (dVal2, dVal1));
            }
            catch (DivideByZeroException e)
            {
                Console.WriteLine (e.Message);
            }
        }
        static public int IntResult (int num, int denom)
        {
            return (num / denom);
        }
        static public double DoubleResult (double num, double denom)
        {
            return (num / denom);
        }
    }
}


           
          


illustrates exception propagation with methods


   

/*
Mastering Visual C# .NET
by Jason Price, Mike Gunderloy

Publisher: Sybex;
ISBN: 0782129110
*/

/*
  Example13_6.cs illustrates exception propagation
  with methods
*/

using System;


// declare the ExceptionsTest class
class ExceptionsTest
{

  public void AccessInvalidArrayElement()
  {
    int[] myArray = new int[2];
    try
    {
      Console.WriteLine("Attempting to access an invalid array element");
      myArray[2] = 1;
    }
    catch (IndexOutOfRangeException e)
    {
      Console.WriteLine("Handling an IndexOutOfRangeException");
      Console.WriteLine("Message = " + e.Message);
      Console.WriteLine("StackTrace = " + e.StackTrace);
    }
  }

  public void DivideByZero()
  {
    int zero = 0;
    Console.WriteLine("Attempting division by zero");
    int myInt = 1 / zero;
  }

}


public class Example13_6
{

  public static void Main()
  {

    ExceptionsTest myExceptionsTest = new ExceptionsTest();

    // call the AccessInvalidArrayElement() method,
    // this method handles the exception locally
    Console.WriteLine("Calling AccessInvalidArrayElement()");
    myExceptionsTest.AccessInvalidArrayElement();

    try
    {

      // call the DivideByZero() method,
      // this method doesn't handle the exception locally and
      // so it must be handled here
      Console.WriteLine("Calling DivideByZero()");
      myExceptionsTest.DivideByZero();

    }
    catch (DivideByZeroException e)
    {

      Console.WriteLine("Handling an IndexOutOfRangeException");
      Console.WriteLine("Message = " + e.Message);
      Console.WriteLine("StackTrace = " + e.StackTrace);

    }

  }

}

           
          


illustrates a nested try/catch block


   

/*
Mastering Visual C# .NET
by Jason Price, Mike Gunderloy

Publisher: Sybex;
ISBN: 0782129110
*/

/*
  Example13_5.cs illustrates a nested try/catch block;
  the nested if throws an exception that is propagated to the
  outer exception
*/

using System;

public class Example13_5
{

  public static void Main()
  {

    try
    {

      // a nested try and catch block
      try
      {

        int[] myArray = new int[2];
        Console.WriteLine("Attempting to access an invalid array element");
        myArray[2] = 1;  // throws the exception

      }
      catch (DivideByZeroException e)
      {

        // code that handles a DivideByZeroException
        Console.WriteLine("Handling a DivideByZeroException");
        Console.WriteLine("Message = " + e.Message);
        Console.WriteLine("StackTrace = " + e.StackTrace);

      }

    }
    catch (IndexOutOfRangeException e)
    {

      // code that handles an IndexOutOfRangeException
      Console.WriteLine("Handling an IndexOutOfRangeException");
      Console.WriteLine("Message = " + e.Message);
      Console.WriteLine("StackTrace = " + e.StackTrace);

    }

  }

}