René Nyffenegger's collection of things on the web
René Nyffenegger on Oracle - Most wanted - Feedback
 

exceptions 2nd

using System;

class E : System.Exception {
  public E() : base ("Exception E") {} 

}

class F : System.Exception {

}

class M {
  
  enum W {
    e,
    f,
    n
  }

  public static void Main() {
    M m = new M();

    try {
      Console.WriteLine("Aufruf: go mit e");
      m.go(W.e);
    }
    catch (E e) {
      Console.WriteLine(e.Message + " gefangen in Main");
    }
    catch (F f) {
      Console.WriteLine(f.Message + " gefangen in Main");
    }

    Console.WriteLine("------------------");

    try {
      Console.WriteLine("Aufruf: go mit f");
      m.go(W.f);
    }
    catch (E e) {
      Console.WriteLine(e.Message + " gefangen in Main");
    }
    catch (F f) {
      Console.WriteLine(f.Message + " gefangen in Main");
    }
    
    Console.WriteLine("------------------");

    try {
      Console.WriteLine("Aufruf: go mit n");
      m.go(W.n);
    }
    catch (E e) {
      Console.WriteLine(e.Message + " gefangen in Main");
    }
    catch (F f) {
      Console.WriteLine(f.Main + " gefangen in Main");

    }
  }

  void go(W w) {

    try {
      switch (w) {
        case W.e: ThrowE(); break;
        case W.f: ThrowF(); break;
        case W.n:         ; break;
      }
    }
    catch (E e) {
      Console.WriteLine(e.Message + " gefangen in go");
    }
    finally {
      Console.WriteLine("In Finally von go");
    }
  }

  void ThrowE() {
    throw new E();
  }

  void ThrowF() {
    throw new F();
  }
}