Language Basics C#

/*
C#: The Complete Reference 
by Herbert Schildt 
Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/
// Derived exceptions must appear before base class exceptions. 
 
using System; 
 
// Create an exception. 
class ExceptA : ApplicationException { 
  public ExceptA() : base() { } 
  public ExceptA(string str) : base(str) { } 
 
  public override string ToString() { 
    return Message; 
  } 

 
// Create an exception derived from ExceptA 
class ExceptB : ExceptA { 
  public ExceptB() : base() { } 
  public ExceptB(string str) : base(str) { } 
 
  public override string ToString() { 
    return Message;  
  } 

 
public class OrderMatters { 
  public static void Main() { 
    for(int x = 0; x < 3; x++) { 
      try { 
        if(x==0) throw new ExceptA("Caught an ExceptA exception"); 
        else if(x==1) throw new ExceptB("Caught an ExceptB exception"); 
        else throw new Exception(); 
      } 
      catch (ExceptB exc) { 
        // catch the exception 
        Console.WriteLine(exc); 
      } 
      catch (ExceptA exc) { 
        // catch the exception 
        Console.WriteLine(exc); 
      } 
      catch (Exception exc) { 
        Console.WriteLine(exc); 
      } 
    } 
  } 
}