illustrates exception propagation with methods

image_pdfimage_print

   

/*
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

image_pdfimage_print

   

/*
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);

    }

  }

}

           
          


illustrates multiple catch blocks

image_pdfimage_print

   

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

Publisher: Sybex;
ISBN: 0782129110
*/
/*
  Example13_4.cs illustrates multiple catch blocks
*/

using System;

public class Example13_4
{

  public static void Main()
  {

    try
    {

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

    }
    catch (DivideByZeroException e)
    {

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

    }
    catch (IndexOutOfRangeException e)
    {

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

    }
    catch (Exception e)
    {

      // code that handles a generic Exception: all other exceptions
      Console.WriteLine("Handling a System.Exception object");
      Console.WriteLine("Message = " + e.Message);
      Console.WriteLine("StackTrace = " + e.StackTrace);

    }

  }

}


           
          


illustrates how to handle a specific exception

image_pdfimage_print

   

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

Publisher: Sybex;
ISBN: 0782129110
*/
/*
  Example13_3.cs illustrates how to handle a specific exception
*/

using System;

public class Example13_3
{

  public static void Main()
  {

    try
    {

      int zero = 0;
      Console.WriteLine("In try block: attempting division by zero");
      int myInt = 1 / zero;  // throws the exception

    }
    catch (DivideByZeroException myException)
    {

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

    }

  }

}


           
          


illustrates an unhandled exception

image_pdfimage_print

   

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

Publisher: Sybex;
ISBN: 0782129110
*/

/*
  Example13_7.cs illustrates an unhandled exception
*/

using System;

public class Example13_7
{

  public static void Main()
  {

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

  }

}

           
          


Catch Error

image_pdfimage_print
   


using System;

public class CatchError
{
    public static void Main()
    {
        int var1 = 1000, var2 = 0, var3;

        try
        {
            var3 = var1 / var2;
        }
        catch (ArithmeticException e)
        {
            Console.WriteLine("Exception: {0}", e.ToString());
            var3 = -1;
        }
        catch (Exception e)
        {
            Console.WriteLine("Exception: {0}", e.ToString());
            var3 = -2;
        }
        Console.WriteLine("The result is: {0}", var3);
    }
}


           
          


Rethrow an exception

image_pdfimage_print

/*
C#: The Complete Reference
by Herbert Schildt

Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/

// Rethrow an exception.

using System;

class Rethrow {
public static void genException() {
// here, numer is longer than denom
int[] numer = { 4, 8, 16, 32, 64, 128, 256, 512 };
int[] denom = { 2, 0, 4, 4, 0, 8 };

for(int i=0; i