Compiler Error C2725

'exception' : unable to throw or catch a managed object by value or reference

The type of a managed exception was not correct.

Example

The following sample generates C2725.

// C2725.cpp
// compile with: /clr
ref class R {
public:
   int i;
};

int main() {
   R % r1 = *gcnew R;
   throw r1;   // C2725

   R ^ r2 = gcnew R;
   throw r2;   // OK   
}

The following sample generates C2725.

// C2725b.cpp
// compile with: /clr
using namespace System;
int main() {
   try {}
   catch( System::Exception%) {}   // C2725
   // try the following line instead
   // catch( System::Exception ^e) {}
}

The following sample generates C2725.

// C2725c.cpp
// compile with: /clr:oldSyntax
using namespace System;
int main() {
   try {}
   catch( System::Exception&) {}   // C2725
   // try the following line instead
   // catch( System::Exception *e) {}
}