CS0160 de erro do compilador

Mensagem de erro

Cláusula catch anterior já captura todas as exceções desta ou de um tipo super ('tipo')

Uma série de catch instruções precisa estar em ordem de derivação decrescente.Por exemplo, os objetos mais derivados devem aparecer primeiro.

Para obter mais informações, consulte Instruções de manipulação de exceção and Exceções e manipulação de exceção (guia de programação C#).

O exemplo a seguir gera CS0160:

// CS0160.cs
public class MyClass2 : System.Exception {}
public class MyClass
{
   public static void Main()
   {
      try {}

      catch(System.Exception) {}   // Second-most derived; should be second catch
      catch(MyClass2) {}   // CS0160  Most derived; should be first catch
   }
}