Compiler Error C2749

'type' : can only throw or catch handle to a managed class with /clr:safe

When using /clr:safe, you can only throw or catch a reference type.

For more information, see /clr (Common Language Runtime Compilation).

Example

The following sample generates C2749:

// C2749.cpp
// compile with: /clr:safe
ref struct MyStruct {
public:
   int i;
};

int main() {
   MyStruct ^x = gcnew MyStruct;

   // Delete the following 4 lines to resolve.
   try { 
      throw (1);   // C2749
   }
   catch(int){}

   // OK
   try {
      throw (x);
   }
   catch(MyStruct ^){} 
}