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();
}
}