编译器警告(等级 4)C4673

引发“identifier”,在 catch 站点将不考虑下列类型

无法在 catch 块中处理引发对象。 紧接在包含此警告的行之后的错误输出中列出了每一种无法处理的类型。 每个未处理的类型都有其自己的警告。 有关详细信息,请阅读每种特定类型的警告。

下面的示例生成 C4673:

// C4673.cpp
// compile with: /EHsc /W4
class Base {
private:
   char * m_chr;
public:
   Base() {
      m_chr = 0;
   }

   ~Base() {
      if(m_chr)
         delete m_chr;
   }
};

class Derv : private Base {
public:
   Derv() {}
   ~Derv() {}
};

int main() {
   try {
      Derv D1;
      // delete previous line, uncomment the next line to resolve
      // Base D1;
      throw D1;   // C4673
   }

   catch(...) {}
}