Error del compilador CS0160

Actualización: noviembre 2007

Mensaje de error

Una cláusula catch previa ya detecta todas las excepciones de este tipo o de tipo superior ('tipo')
A previous catch clause already catches all exceptions of this or of a super type ('type')

Una serie de instrucciones catch debe tener orden decreciente de derivación. Por ejemplo, los objetos más derivados deben aparecer en primer lugar.

Para obtener más información, vea Instrucciones de control de excepciones y Excepciones y control de excepciones (Guía de programación de C#).

El código siguiente genera el error 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
   }
}