public static void Main()
Console.WriteLine("back to main end");
catch(IOException e) when (LogAndReturn("Never called", true))
catch(Exception e) when (LogAndReturn("Bottom filter called", true))
Console.WriteLine("Caught in Bottom");
catch(Exception e) when (LogAndReturn("Middle filter", false))
Console.WriteLine("Caught in middle");
Console.WriteLine("Middle finally");
Console.WriteLine("Top finally");
static bool LogAndReturn(string msg, bool result)