Compiler Error C2749


The new home for Visual Studio documentation is Visual Studio 2017 Documentation on

The latest version of this topic can be found at 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).

The following sample generates C2749:

// C2749.cpp  
// compile with: /clr:safe  
ref struct MyStruct {  
   int i;  
int main() {  
   MyStruct ^x = gcnew MyStruct;  
   // Delete the following 4 lines to resolve.  
   try {   
      throw (1);   // C2749  
   // OK  
   try {  
      throw (x);  
   catch(MyStruct ^){}