Use a custom Exception for RangeArray errors : Exception Class : Language Basics C# Source Code


Custom Search

C# Source Code » Language Basics » Exception Class »

 

Use a custom Exception for RangeArray errors









    

/*
C#: The Complete Reference 
by Herbert Schildt 

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

// Use a custom Exception for RangeArray errors. 
  
using System;  
  
// Create an RangeArray exception. 
class RangeArrayException : ApplicationException { 
  // Implement the standard constructors 
  public RangeArrayException() : base() { } 
  public RangeArrayException(string str) : base(str) { }  
 
  // Override ToString for RangeArrayException. 
  public override string ToString() { 
    return Message; 
  } 
} 
 
// An improved version of RangeArray. 
class RangeArray {   
  // private data 
  int[] a; // reference to underlying array   
  int lowerBound; // lowest index 
  int upperBound; // greatest index 
 
  int len; // underlying var for Length property 
    
  // Construct array given its size.  
  public RangeArray(int low, int high) {  
    high++; 
    if(high <= low) { 
      throw new RangeArrayException("Low index not less than high."); 
    } 
    a = new int[high - low];  
    len = high - low;   
 
    lowerBound = low; 
    upperBound = --high; 
  }  
  
  // Read-only Length property.  
  public int Length {  
    get {  
      return len;  
    }  
  }  
 
  // This is the indexer for RangeArray.  
  public int this[int index] {  
    // This is the get accessor.  
    get {  
      if(ok(index)) {  
        return a[index - lowerBound];  
      } else {  
        throw new RangeArrayException("Range Error."); 
      } 
    }  
  
    // This is the set accessor. 
    set {  
      if(ok(index)) {  
        a[index - lowerBound] = value;  
      }  
      else throw new RangeArrayException("Range Error."); 
    }  
  }  
  
  // Return true if index is within bounds.  
  private bool ok(int index) {  
    if(index >= lowerBound & index <= upperBound) return true;  
    return false;  
  }  
}   
   
// Demonstrate the index-range array.  
public class RangeArrayDemo1 {   
  public static void Main() {   
    try { 
      RangeArray ra = new RangeArray(-5, 5);  
      RangeArray ra2 = new RangeArray(1, 10);  
 
      // Demonstrate ra 
      Console.WriteLine("Length of ra: " + ra.Length); 
 
      for(int i = -5; i <= 5; i++) 
        ra[i] = i; 
   
      Console.Write("Contents of ra: "); 
      for(int i = -5; i <= 5; i++) 
        Console.Write(ra[i] + " "); 
 
      Console.WriteLine("\n"); 
 
      // Demonstrate ra2 
      Console.WriteLine("Length of ra2: " + ra2.Length); 
 
      for(int i = 1; i <= 10; i++) 
        ra2[i] = i; 
 
      Console.Write("Contents of ra2: "); 
      for(int i = 1; i <= 10; i++) 
        Console.Write(ra2[i] + " "); 
 
      Console.WriteLine("\n"); 
 
    } catch (RangeArrayException exc) { 
       Console.WriteLine(exc); 
    } 
 
    // Now, demonstrate some errors. 
    Console.WriteLine("Now generate some range errors."); 
 
    // Use an invalid constructor. 
    try { 
      RangeArray ra3 = new RangeArray(100, -10); // Error 
   
    } catch (RangeArrayException exc) { 
       Console.WriteLine(exc); 
    } 
 
    // Use an invalid index. 
    try { 
      RangeArray ra3 = new RangeArray(-2, 2);  
 
      for(int i = -2; i <= 2; i++) 
        ra3[i] = i; 
 
      Console.Write("Contents of ra3: "); 
      for(int i = -2; i <= 10; i++) // generate range error 
        Console.Write(ra3[i] + " "); 
 
    } catch (RangeArrayException exc) { 
       Console.WriteLine(exc); 
    } 
  }  
}


           
       
    
   
  
   







HTML code for linking to this page:

Follow Navioo On Twitter

C# Source Code

 Navioo Language Basics
» Exception Class