using System;
public class Program
{
public static void Main()
int a = 7;
int b = 0;
try
DoSomethingThatMightFail();
}
catch (Exception ex) when (a / b == 0)
// This block is never reached because a / b throws an ignored
// DivideByZeroException which is treated as false.
Console.WriteLine("block 1");
catch (Exception ex)
// This block is reached since the DivideByZeroException in the
// previous when clause is ignored.
Console.WriteLine("block 2");
public static void DoSomethingThatMightFail()
// This will always throw an ArgumentNullException.
Type.GetType(null);